Add onClose (#25)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index f320635..0aa832a 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,9 @@
+## 3.3.0
+
+- Add an `onClose` event to the `SseConnection`. This allows consumers to
+  listen to this event in lue of `sseConnection.sink.done` as that is not
+  guaranteed to fire.
+
 ## 3.2.2
 
 - Fix an issue where `keepAlive` may cause state errors when attempting to
diff --git a/lib/src/server/sse_handler.dart b/lib/src/server/sse_handler.dart
index ed4cb9e..e3f6cc7 100644
--- a/lib/src/server/sse_handler.dart
+++ b/lib/src/server/sse_handler.dart
@@ -41,6 +41,11 @@
 
   final _closedCompleter = Completer<void>();
 
+  /// Completes when the [SseConnection] closes.
+  ///
+  /// This is guaranteed to fire unlike `this.sink.close`;
+  Future<void> get onClose => _closedCompleter.future;
+
   /// Creates an [SseConnection] for the supplied [_sink].
   ///
   /// If [keepAlive] is supplied, the connection will remain active for this
diff --git a/pubspec.yaml b/pubspec.yaml
index 8e3ab44..194277d 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,5 +1,5 @@
 name: sse
-version: 3.2.2
+version: 3.3.0
 homepage: https://github.com/dart-lang/sse
 description: >-
   Provides client and server functionality for setting up bi-directional