Trouble getting the SpO2 reading on the watch while it works on the sim

I'm trying to display the latest SpO2 reading on a watch face using this code:

if(!(Toybox has :SensorHistory) && !(Toybox.SensorHistory has :getOxygenSaturationHistory)) {
break;
}
var iterator = Toybox.SensorHistory.getOxygenSaturationHistory({});
if(iterator.next() == null || iterator.next().data == null) {
break;
}
var data = iterator.next().data.format("%.0f");//iterator.next().data.toNumber() as Toybox.Lang.Integer
result[:value] = formatNumber(data, maxLength);
It returns a reading on the sim just fine but on the watch (Venu 3) I get nothing. In fact it seems to be because iterator.next() == null. Btw. this is a snippet of code from switch case list - hence the breaks in order to return default values.
Any help would be much appreciated.