retry<O> method

ZIO<R, E, A> retry<O>(
  1. Schedule<R, E, E, O> schedule
)

Retry this ZIO if it fails using the given Schedule.

Implementation

ZIO<R, E, A> retry<O>(Schedule<R, E, E, O> schedule) =>
    schedule.driver<R, E>().flatMap((driver) {
      ZIO<R, E, A> loop() => catchError((error) => driver.next(error).match(
            (e) => e.match(
              () => ZIO.fail(error),
              (e) => ZIO.fail(e),
            ),
            (_) => loop(),
          ));

      return loop();
    });