Index: lib/src/utils.dart |
diff --git a/lib/src/utils.dart b/lib/src/utils.dart |
index 5f970dea83c48d48e708563dcff8827df498186d..cab8077df8fb9c20030cacab952ae37c3f7abbe3 100644 |
--- a/lib/src/utils.dart |
+++ b/lib/src/utils.dart |
@@ -352,12 +352,17 @@ Future maybeFirst(Stream stream) { |
/// either completed or been canceled. |
CancelableOperation cancelableNext(StreamQueue queue) { |
var fork = queue.fork(); |
- var completer = new CancelableCompleter( |
- onCancel: () => fork.cancel(immediate: true)); |
+ var canceled = false; |
+ var completer = new CancelableCompleter(onCancel: () { |
+ canceled = true; |
+ return fork.cancel(immediate: true); |
+ }); |
+ |
completer.complete(fork.next.then((_) { |
fork.cancel(); |
- return queue.next; |
+ return canceled ? null : queue.next; |
})); |
+ |
return completer.operation; |
} |