in lib/src/sink_completer.dart [133:153]
void _setDestinationSink(WebSocketSink sink) {
assert(_destinationSink == null);
_destinationSink = sink;
// If the user has already added data, it's buffered in the controller, so
// we add it to the sink.
if (_controller != null) {
// Catch any error that may come from [addStream] or [sink.close]. They'll
// be reported through [done] anyway.
sink
.addStream(_controller!.stream)
.whenComplete(() => sink.close(_closeCode, _closeReason))
.catchError((_) {});
}
// If the user has already asked when the sink is done, connect the sink's
// done callback to that completer.
if (_doneCompleter != null) {
_doneCompleter!.complete(sink.done);
}
}