Hyperlinkv0.8.0-beta.28

Channel

Channel.ensuringconsteffect/Channel.ts:7132
<Env2>(finalizer: Effect.Effect<unknown, never, Env2>): <
  OutElem,
  OutDone,
  OutErr,
  InElem,
  InErr,
  InDone,
  Env
>(
  self: Channel<OutElem, OutErr, OutDone, InElem, InErr, InDone, Env>
) => Channel<OutElem, OutErr, OutDone, InElem, InErr, InDone, Env2 | Env>
<OutElem, OutErr, OutDone, InElem, InErr, InDone, Env, Env2>(
  self: Channel<OutElem, OutErr, OutDone, InElem, InErr, InDone, Env>,
  finalizer: Effect.Effect<unknown, never, Env2>
): Channel<OutElem, OutErr, OutDone, InElem, InErr, InDone, Env2 | Env>

Returns a channel with a finalizer effect that is guaranteed to run once the channel begins execution, whether it succeeds or fails.

Example (Ensuring cleanup runs)

import { Channel, Console, Data } from "effect"

class EnsureError extends Data.TaggedError("EnsureError")<{
  readonly operation: string
}> {}

// Create a channel
const dataChannel = Channel.fromIterable([1, 2, 3])

// Ensure cleanup always runs
const channelWithCleanup = Channel.ensuring(
  dataChannel,
  Console.log("Cleanup executed regardless of success or failure")
)
resource management
Source effect/Channel.ts:713214 lines
export const ensuring: {
  <Env2>(
    finalizer: Effect.Effect<unknown, never, Env2>
  ): <OutElem, OutDone, OutErr, InElem, InErr, InDone, Env>(
    self: Channel<OutElem, OutErr, OutDone, InElem, InErr, InDone, Env>
  ) => Channel<OutElem, OutErr, OutDone, InElem, InErr, InDone, Env2 | Env>
  <OutElem, OutErr, OutDone, InElem, InErr, InDone, Env, Env2>(
    self: Channel<OutElem, OutErr, OutDone, InElem, InErr, InDone, Env>,
    finalizer: Effect.Effect<unknown, never, Env2>
  ): Channel<OutElem, OutErr, OutDone, InElem, InErr, InDone, Env2 | Env>
} = dual(2, <OutElem, OutErr, OutDone, InElem, InErr, InDone, Env, Env2>(
  self: Channel<OutElem, OutErr, OutDone, InElem, InErr, InDone, Env>,
  finalizer: Effect.Effect<unknown, never, Env2>
): Channel<OutElem, OutErr, OutDone, InElem, InErr, InDone, Env2 | Env> => onExit(self, (_) => finalizer))
Referenced by 1 symbols