fromSubscription static method

CancelableOperation<void> fromSubscription(
  1. StreamSubscription<void> subscription
)

Creates a CancelableOperation wrapping subscription.

This overrides StreamSubscription.onDone and StreamSubscription.onError so that the returned operation will complete when the subscription completes or emits an error. When this operation is canceled or when it emits an error, the subscription will be canceled (unlike CancelableOperation.fromFuture(subscription.asFuture())).

Implementation

static CancelableOperation<void> fromSubscription(
    StreamSubscription<void> subscription) {
  var completer = CancelableCompleter<void>(onCancel: subscription.cancel);
  subscription.onDone(completer.complete);
  subscription.onError((Object error, StackTrace stackTrace) {
    subscription.cancel().whenComplete(() {
      completer.completeError(error, stackTrace);
    });
  });
  return completer.operation;
}