addExecution<R, C> method

FutureOr<R> addExecution<R, C>(
  1. TransactionExecution<R, C> exec, {
  2. TransactionErrorResolver? errorResolver,
  3. Object? operation,
  4. String? debugInfo()?,
})

Implementation

FutureOr<R> addExecution<R, C>(TransactionExecution<R, C> exec,
    {TransactionErrorResolver? errorResolver,
    Object? operation,
    String? Function()? debugInfo}) {
  if (isFinished) {
    throw StateError("Transaction already finished:\n$this");
  }

  if (_executionsFutures.isEmpty) {
    var ret = _executeSafe(exec, operation, errorResolver, debugInfo);
    _executionsFutures.add(ret);
    return ret;
  } else {
    var last = _executionsFutures.last;

    var ret = last.resolveWith(() {
      return _executeSafe(exec, operation, errorResolver, debugInfo);
    });

    _executionsFutures.add(ret);
    return ret;
  }
}