According to the documentation associated with the function, it reads the RSSI of the last successfully received packet; Thus, if there is no successfully received packet, it may be returning -120 as an error/uninitialized?
The RSSI from the scanReport is the direct access to the value, so using that should be fine in lieu of the function not working correctly.
Listed under the BLE_StackGap.h file at line 1049, it says:
/** Rssi of the responding device.
* Range: -127 <= N <= +20
* Units: dBm
* N = 127 -> RSSI not available
Thus, it may be listing the incorrect values when you call the function due to not being available while not connected/scanning devices? There is most likely a requirement such as being connected, actively scanning, or calling it when you receive an advertisement packet...