Allows coupling termination (cancellation, completion, erroring) of Sinks and Sources while creating a Flow between them.

Flow operators composed of Sinks and Sources




See Flow.fromSinkAndSource for docs on the general workings and examples.

This operator only adds coupled termination to what fromSinkAndSource does: If the emitted Flow gets a cancellation, the Source is cancelled, however the Sink will also be completed. The table below illustrates the effects in detail:

Returned Flow Sink (in) Source (out)
cause: upstream (sink-side) receives completion effect: receives completion effect: receives cancel
cause: upstream (sink-side) receives error effect: receives error effect: receives cancel
cause: downstream (source-side) receives cancel effect: completes effect: receives cancel
effect: cancels upstream, completes downstream effect: completes cause: signals complete
effect: cancels upstream, errors downstream effect: receives error cause: signals error or throws
effect: cancels upstream, completes downstream cause: cancels effect: receives cancel

The order in which the in and out sides receive their respective completion signals is not defined, do not rely on its ordering.