close method
Tells the consumer that no further streams will be added.
This allows the consumer to complete any remaining work and release resources that are no longer needed
Returns a future which is completed when the consumer has shut down.
If cleaning up can fail, the error may be reported in the returned future,
otherwise it completes with null.
Implementation
@override
Future<dynamic> close() async {
for (final completer in completers) {
await completer.future;
}
completers.clear();
streams.clear();
subscriptions.clear();
return Future<dynamic>.value(null);
}