Using indices handles this specific situation of a Dataset being decode after some processing, if we're going to add a check of the dtype.kind != 'O' type then I would actually I would argue that the best check would be to check if the dtype is a valid NetCDF datatype.  

Also, had I decoded the dataset directly from OpenDAP it would download ALL the data first (because of some of the .data.dtype checks), not just coordinates so we're going to need some sort of fix along these lines.