commit<R> method

FutureOr<R?> commit<R>()

Commits this transaction, returning the final result.

Implementation

FutureOr<R?> commit<R>() {
  if (_aborted) {
    if (_commitCalled) {
      return null;
    }

    _commitCalled = true;

    return _abortImpl().resolveMapped((_) => null);
  }

  if (_commitCalled) {
    FutureOr<dynamic> retFuture;
    if (transactionResult != null) {
      retFuture = transactionResult;
    } else {
      retFuture = _transactionCompleter.future;
    }
    return retFuture.resolveMapped((r) => r as R?);
  }

  _commitCalled = true;

  return waitAllExecuted().resolveMapped((_) => _commitImpl<R>());
}