Hyperlinkv0.8.0-beta.28

Effect

Effect.tapCauseFilterconsteffect/Effect.ts:3833
<E, B, E2, R2, EB, X extends Cause.Cause<any>>(
  filter: Filter.Filter<Cause.Cause<E>, EB, X>,
  f: (a: EB, cause: Cause.Cause<E>) => Effect<B, E2, R2>
): <A, R>(self: Effect<A, E, R>) => Effect<A, E | E2, R | R2>
<A, E, R, B, E2, R2, EB, X extends Cause.Cause<any>>(
  self: Effect<A, E, R>,
  filter: Filter.Filter<Cause.Cause<E>, EB, X>,
  f: (a: EB, cause: Cause.Cause<E>) => Effect<B, E2, R2>
): Effect<A, E | E2, R | R2>

Executes a side effect conditionally when a failed effect's cause passes a filter.

When to use

Use when you need to observe only failure causes selected by a Filter, while giving the side effect both the selected value and the original Cause.

Details

A successful filter result runs the side effect with the selected value and original cause. A failed filter result skips the side effect and preserves the original cause.

Source effect/Effect.ts:383311 lines
export const tapCauseFilter: {
  <E, B, E2, R2, EB, X extends Cause.Cause<any>>(
    filter: Filter.Filter<Cause.Cause<E>, EB, X>,
    f: (a: EB, cause: Cause.Cause<E>) => Effect<B, E2, R2>
  ): <A, R>(self: Effect<A, E, R>) => Effect<A, E | E2, R | R2>
  <A, E, R, B, E2, R2, EB, X extends Cause.Cause<any>>(
    self: Effect<A, E, R>,
    filter: Filter.Filter<Cause.Cause<E>, EB, X>,
    f: (a: EB, cause: Cause.Cause<E>) => Effect<B, E2, R2>
  ): Effect<A, E | E2, R | R2>
} = internal.tapCauseFilter