Hyperlinkv0.8.0-beta.28

Effect

Effect.eventuallyconsteffect/Effect.ts:3933
<A, E, R>(self: Effect<A, E, R>): Effect<A, never, R>

Retries an effect until it succeeds, discarding failures.

Details

Yields between attempts so other fibers can run.

Example (Retrying until success)

import { Console, Effect } from "effect"

let attempts = 0

const flaky = Effect.gen(function*() {
  attempts++
  yield* Console.log(`Attempt ${attempts}`)
  if (attempts < 3) {
    return yield* Effect.fail("Not ready")
  }
  return "Ready"
})

const program = Effect.eventually(flaky)

Effect.runPromise(program).then(console.log)
// Output:
// Attempt 1
// Attempt 2
// Attempt 3
// Ready
repetition
Source effect/Effect.ts:39331 lines
export const eventually: <A, E, R>(self: Effect<A, E, R>) => Effect<A, never, R> = internal.eventually