```_getDefaultPreferredNetworkType()``` looks good to me.
The possibility of ```_getDefaultPreferredNetworkType()``` build a wrong value is that the ```mozMobileConnection.supportedNetworkTypes``` returns a weird combination, like ['lte', 'gsm'] for example (AFAIK, there is no such combination). And in this case, we should check what is wrong in ```supportedNetworkTypes```. :)