Start draining the sink.
The task function is where you can call add, addError and close.
task
Future<void> drain(Future<void> Function(AwaitableSink<T> sink) task);