diff --git a/lib/src/utils.dart b/lib/src/utils.dart
index da8f640e85dbed58d61939d658fcb017c0310d53..372f7def98b8a7a98928bf1d3e0fc52bfd7787a0 100644
--- a/lib/src/utils.dart
+++ b/lib/src/utils.dart
@@ -191,7 +191,10 @@ Future<Stream> validateStream(Stream stream) {
     controller.add(value);
   }, onError: (error) {
     // If the error came after values, it's OK.
-    if (completer.isCompleted) controller.addError(error);
+    if (completer.isCompleted) {
+      controller.addError(error);
+      return;
+    }
 
     // Otherwise, the error came first and the stream is invalid.
     completer.completeError(error);