valueOrCancellation method

Future<T?> valueOrCancellation(
  1. [T? cancellationValue]

Creates a Future that completes when this operation completes or when it's cancelled.

If this operation completes, this completes to the same result as value. If this operation is cancelled, the returned future waits for the future returned by cancel, then completes to cancellationValue.


Future<T?> valueOrCancellation([T? cancellationValue]) {
  var completer = Completer<T?>.sync();
  value.then(completer.complete, onError: completer.completeError);

  _completer._cancelCompleter?.future.then((_) {
  }, onError: completer.completeError);

  return completer.future;