Package: effect
Module: Stream
Recovers from stream failures by filtering the Cause and switching to a recovery stream.
Non-matching causes are re-emitted as failures.
Example (Catching matching causes)
import { Cause, Console, Effect, Stream } from "effect"
const program = Effect.gen(function*() {
const failingStream = Stream.fail("NetworkError")
const recovered = Stream.catchCauseIf(
failingStream,
(cause) => Cause.hasFails(cause),
(cause) => Stream.make(`Recovered: ${Cause.squash(cause)}`)
)
const output = yield* Stream.runCollect(recovered)
yield* Console.log(output)
})
Effect.runPromise(program)
// Output: [ "Recovered: NetworkError" ]
Signature
declare const catchCauseIf: { <E, A2, E2, R2>(predicate: Predicate<Cause.Cause<E>>, f: (cause: Cause.Cause<E>) => Stream<A2, E2, R2>): <A, R>(self: Stream<A, E, R>) => Stream<A | A2, E | E2, R2 | R>; <A, E, R, A2, E2, R2>(self: Stream<A, E, R>, predicate: Predicate<Cause.Cause<E>>, f: (cause: Cause.Cause<E>) => Stream<A2, E2, R2>): Stream<A | A2, E | E2, R | R2>; }
Since v4.0.0