Return a future which is completed when the StreamSink is finished.
Otherwise, the returned future will complete when either:
- all events have been processed and the sink has been closed, or
- the sink has otherwise been stopped from handling more events (for example by canceling a stream subscription).
@override Future get done => (_done ?? Completer()).future;