xr.Dataset implements a bunch of dask-specific methods, such as __dask_tokenize__ and __dask_graph__. It also obviously has public methods that involve dask such as .compute() and .load().
In DataTree on the other hand, I haven't yet implemented any methods like these, or even written any tests that involve dask! You can probably still use dask with datatree right now, but from dask's perspective the datatree is presumably merely a set of unconnected Dataset objects.
We could choose to implement methods like .load() as just a mapping over the tree, i.e.
def load(self):
for node in self.subtree:
if node.has_data:
node.ds.load()
but really this should probably wait for #41, or be done as part of that refactor.
I don't really understand what the double-underscore methods do though yet, so would appreciate input on that.