Close sink on trailing throttle without pending (dart-lang/stream_transform#125)
diff --git a/pkgs/stream_transform/lib/src/rate_limit.dart b/pkgs/stream_transform/lib/src/rate_limit.dart index ebb55a2..b29f4f5 100644 --- a/pkgs/stream_transform/lib/src/rate_limit.dart +++ b/pkgs/stream_transform/lib/src/rate_limit.dart
@@ -165,6 +165,7 @@ }, onDone: (sink) { isDone = true; if (hasPending) return; // Will be closed by timer. + sink.close(); timer?.cancel(); timer = null; });
diff --git a/pkgs/stream_transform/test/throttle_test.dart b/pkgs/stream_transform/test/throttle_test.dart index 27d9b11..bbd0cfb 100644 --- a/pkgs/stream_transform/test/throttle_test.dart +++ b/pkgs/stream_transform/test/throttle_test.dart
@@ -117,6 +117,13 @@ expect(isDone, true); }); + test('closes immediately if there is no pending value', () async { + values.add(1); + await values.close(); + await Future(() {}); + expect(isDone, true); + }); + if (streamType == 'broadcast') { test('multiple listeners all get values', () async { var otherValues = <int>[];