'Asynchronously retrieve a document by document ID.
Identical to get() except that it returns a future. Call
get_result() on the return value to block on the call and get its result.'

@datastore_rpc._positional(2)
def get_async(self, doc_id, deadline=None):

    future = self.get_range_async(start_id=doc_id, limit=1, deadline=deadline)
    def hook(response):
        if (response.results and (response.results[0].doc_id == doc_id)):
            return response.results[0]
        return None
    return _SimpleOperationFuture(future, hook)
