/** * Reads an input and continue exposing both error and completion. * * @tsplus static effect/core/stream/Channel.Ops readWith */ export function readWith< Env, Env1, Env2, InErr, InElem, InDone, OutErr, OutErr1, OutErr2, OutElem, OutElem1, OutElem2, OutDone, OutDone1, OutDone2 >( input: (i: InElem) => Channel, error: ( e: InErr ) => Channel, done: (d: InDone) => Channel ): Channel< Env | Env1 | Env2, InErr, InElem, InDone, OutErr | OutErr1 | OutErr2, OutElem | OutElem1 | OutElem2, OutDone | OutDone1 | OutDone2 > { return Channel.readWithCause( input, (cause) => cause.failureOrCause.fold(error, (cause) => Channel.failCause(cause)), done ) }