orDieWith<T extends Object> method

Effect<E, Never, R> orDieWith<T extends Object>(
  1. T onError(
    1. L l
    )
)

{@category alternatives}

Implementation

Effect<E, Never, R> orDieWith<T extends Object>(T Function(L l) onError) =>
    Effect.from(
      (context) => _unsafeRun(context).then(
        (exit) => switch (exit) {
          Left(value: final cause) => switch (cause) {
              Failure<L>(error: final error) =>
                Left(Die.current(onError(error))),
              Die() => Left(cause),
              Interrupted() => Left(cause),
            },
          Right(value: final value) =>
            Effect<E, Never, R>.succeed(value)._unsafeRun(context),
        },
      ),
    );