UNPKG

@effect-ts/system

Version:

Effect-TS is a zero dependency set of libraries to write highly productive, purely functional TypeScript at scale.

55 lines (51 loc) 1.69 kB
// ets_tracing: off import * as P from "../../../../Promise/index.js" import type * as C from "../core.js" import * as InterruptWhen from "./interruptWhen.js" /** * Returns a new channel, which is the same as this one, except it will be interrupted when the * specified promise is completed. If the promise is completed before the underlying channel is * done, then the returned channel will yield the value of the promise. Otherwise, if the * underlying channel finishes first, then the returned channel will yield the value of the * underlying channel. */ export function interruptWhenP_< Env, InErr, InElem, InDone, OutErr, OutErr1, OutElem, OutDone, OutDone1 >( self: C.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>, promise: P.Promise<OutErr1, OutDone1> ): C.Channel< Env, InErr, InElem, InDone, OutErr | OutErr1, OutElem, OutDone | OutDone1 > { return InterruptWhen.interruptWhen_(self, P.await(promise)) } /** * Returns a new channel, which is the same as this one, except it will be interrupted when the * specified promise is completed. If the promise is completed before the underlying channel is * done, then the returned channel will yield the value of the promise. Otherwise, if the * underlying channel finishes first, then the returned channel will yield the value of the * underlying channel. * * @ets_data_first interruptWhenP_ */ export function interruptWhenP<OutErr1, OutDone1>( promise: P.Promise<OutErr1, OutDone1> ) { return <Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>( self: C.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone> ) => interruptWhenP_(self, promise) }