fromSubscription function

CancelableOperation<void> fromSubscription(
  1. StreamSubscription<void> subscription, {
  2. bool? cancelOnError,
})

Implementation

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