'Asynchronous Commit operation.
Args:
config: A Configuration object or None.  Defaults are taken from
the connection\'s default configuration.
Returns:
A MultiRpc object.'

def async_commit(self, config):

    transaction = self._end_transaction()
    if (transaction is None):
        return None
    if (self._api_version == _CLOUD_DATASTORE_V1):
        req = googledatastore.CommitRequest()
        req.transaction = transaction
        if Configuration.force_writes(config, self.__config):
            self.__force(req)
        for entity in self.__pending_v1_upserts.itervalues():
            mutation = req.mutations.add()
            mutation.upsert.CopyFrom(entity)
        for key in self.__pending_v1_deletes.itervalues():
            mutation = req.mutations.add()
            mutation.delete.CopyFrom(key)
        self.__pending_v1_upserts.clear()
        self.__pending_v1_deletes.clear()
        resp = googledatastore.CommitResponse()
    else:
        req = transaction
        resp = datastore_pb.CommitResponse()
    return self._make_rpc_call(config, 'Commit', req, resp, get_result_hook=self.__commit_hook, service_name=self._api_version)
