Hyperlinkv0.8.0-beta.28

Stream

Stream.ensuringconsteffect/Stream.ts:9987
<R2>(finalizer: Effect.Effect<unknown, never, R2>): <A, E, R>(
  self: Stream<A, E, R>
) => Stream<A, E, R | R2>
<A, E, R, R2>(
  self: Stream<A, E, R>,
  finalizer: Effect.Effect<unknown, never, R2>
): Stream<A, E, R | R2>

Executes the provided finalizer after this stream's finalizers run.

Example (Ensuring finalization)

import { Console, Effect, Stream } from "effect"

const stream = Stream.fromArray([1, 2]).pipe(
  Stream.ensuring(Effect.orDie(Console.log("cleanup")))
)

const program = Effect.gen(function*() {
  const collected = yield* Stream.runCollect(stream)
  yield* Console.log(collected)
})

Effect.runPromise(program)
//=> cleanup
//=> [1, 2]
Finalization
Source effect/Stream.ts:99878 lines
export const ensuring: {
  <R2>(finalizer: Effect.Effect<unknown, never, R2>): <A, E, R>(self: Stream<A, E, R>) => Stream<A, E, R | R2>
  <A, E, R, R2>(self: Stream<A, E, R>, finalizer: Effect.Effect<unknown, never, R2>): Stream<A, E, R | R2>
} = dual(
  2,
  <A, E, R, R2>(self: Stream<A, E, R>, finalizer: Effect.Effect<unknown, never, R2>): Stream<A, E, R | R2> =>
    fromChannel(Channel.ensuring(self.channel, finalizer))
)