Refactored `DataStore.join()` to be async & return a `Deferred`