This mask/count/unmask logic is just emulating what previously took place in the DataManager, so I'd rather not change that behaviour here.

I'm not 100% on the order of events, but when we moved to masked arrays I think we added the mask/count/unmask logic to reduce the performance impact. But since then I've added some masked array optimisations so it might be possible to get rid of the count/unmask logic without taking much of a performance hit.

(The netCDF interface returns either a normal array or a masked array depending on whether the requested slice of the variable contains the missing value.)