Sink.lazyInitAsync
Creates a real Sink
upon receiving the first element.
Signature
def lazyInitAsync[T, M](sinkFactory: () => Future[Sink[T, M]]): Sink[T, Future[Option[M]]]
Description
Creates a real Sink
upon receiving the first element. Internal Sink
will not be created if there are no elements, because of completion or error.
- If upstream completes before an element was received then the
Future
is completed withNone
. - If upstream fails before an element was received,
sinkFactory
throws an exception, or materialization of the internal sink fails then theFuture
is completed with the exception. - Otherwise the
Future
is completed with the materialized value of the internal sink.
cancels never
backpressures when initialized and when created sink backpressures