`_fetch_datatype` takes transport as an argument, but `update_datatype` is calling the method on the transport directly.  Any reason they are different?