Return a future which is completed when the StreamSink is finished.
If the StreamSink
fails with an error,
perhaps in response to adding events using add, addError or close,
the done future will complete with that error.
Otherwise, the returned future will complete when either:
Future get done;