MCPcopy
hub / github.com/Effect-TS/effect / repeatOrElseEffectLoop

Function repeatOrElseEffectLoop

packages/effect/src/internal/schedule.ts:1959–1972  ·  view source on GitHub ↗
(
  self: Effect.Effect<A, E, R>,
  driver: Schedule.ScheduleDriver<B, A, R1>,
  orElse: (error: E, option: Option.Option<B>) => Effect.Effect<C, E2, R2>,
  value: A
)

Source from the content-addressed store, hash-verified

1957
1958/** @internal */
1959const repeatOrElseEffectLoop = <A, E, R, R1, B, C, E2, R2>(
1960 self: Effect.Effect<A, E, R>,
1961 driver: Schedule.ScheduleDriver<B, A, R1>,
1962 orElse: (error: E, option: Option.Option<B>) => Effect.Effect<C, E2, R2>,
1963 value: A
1964): Effect.Effect<B | C, E2, R | R1 | R2> =>
1965 core.matchEffect(driver.next(value), {
1966 onFailure: () => core.orDie(driver.last),
1967 onSuccess: (b) =>
1968 core.matchEffect(self, {
1969 onFailure: (error) => orElse(error, Option.some(b)),
1970 onSuccess: (value) => repeatOrElseEffectLoop(self, driver, orElse, value)
1971 })
1972 })
1973
1974/** @internal */
1975export const retry_Effect = dual<

Callers 1

schedule.tsFile · 0.85

Calls 2

orElseFunction · 0.85
nextMethod · 0.65

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…