resolve method

Resolvable<T> resolve(
  1. Resolvable<T> resolvable
)

Completes the operation with the provided resolvable.

Implementation

Resolvable<T> resolve(Resolvable<T> resolvable) {
  if (_isResolving) {
    return Sync.unsafe(Err('SafeCompleter<$T> is already resolving!'));
  }
  _isResolving = true;
  if (isCompleted) {
    return Sync.unsafe(Err('SafeCompleter<$T> is already completed!'));
  }

  return resolvable.resultMap((e) {
    // Use a switch on the Result 'e' for exhaustive, safe handling.
    switch (e) {
      case Ok(value: final value):
        _value = Some(value);
        _completer.complete(value);
        _isResolving = false;
        return e;
      case Err():
        _completer.completeError(e);
        _isResolving = false;
        return e;
    }
  });
}