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>[];