diff --git a/lib/src/utils.dart b/lib/src/utils.dart
index e422079..2a531e8 100644
--- a/lib/src/utils.dart
+++ b/lib/src/utils.dart
@@ -445,7 +445,7 @@
 
     var state = _StreamState.initial;
 
-    /// Sends trailing data to the stream. Reeturns true if the subscription
+    /// Sends trailing data to the stream. Returns true if the subscription
     /// should still be resumed afterwards.
     bool emitTrailing() {
       // Attempt to serve requests from pending data first.
@@ -512,14 +512,25 @@
     controller
       ..onListen = scheduleInitialEmit
       ..onPause = () {
-        assert(state == _StreamState.initial || state == _StreamState.attached,
-            'Unexpected pause event in $state.');
+        assert(
+            state == _StreamState.initial ||
+                state == _StreamState.attached ||
+                state == _StreamState.done,
+            'Unexpected pause event in $state ($_remainingBlocksInOutgoing blocks remaining).');
 
         if (state == _StreamState.initial) {
           state = _StreamState.pausedAfterInitial;
-        } else {
+        } else if (state == _StreamState.attached) {
           _pause();
           state = _StreamState.pausedAfterAttached;
+        } else if (state == _StreamState.done) {
+          // It may happen that onPause is called in a state where we believe
+          // the stream to be done already. After the stream is done, we close
+          // the controller in a new microtask. So if the subscription is paused
+          // after the last event it emitted but before we close the controller,
+          // we can get a pause event here.
+          // There's nothing to do in that case.
+          assert(_subscription?.isPaused != false);
         }
       }
       ..onResume = () {
diff --git a/test/utils_test.dart b/test/utils_test.dart
index 93af4e8..e9b3a8b 100644
--- a/test/utils_test.dart
+++ b/test/utils_test.dart
@@ -279,6 +279,27 @@
       await reader.nextBlocks(2).first;
       await reader.close();
     });
+
+    test('can pause stream subscriptions when all data has been emitted',
+        () async {
+      final reader = BlockReader(controller.stream);
+      controller.add(Uint8List(blockSize * 3));
+      await reader.nextBlock();
+
+      late StreamSubscription<Uint8List> subscription;
+      final didPause = Completer<void>();
+
+      subscription = reader.nextBlocks(2).listen((_) {
+        scheduleMicrotask(() {
+          subscription.pause();
+          didPause.complete();
+        });
+      });
+
+      await didPause.future;
+      await subscription.cancel();
+      await reader.close();
+    });
   });
 }
 
