unsafeRun method
Run the ZIO with the provided ZIOContext.
Implementation
FutureOr<Exit<E, A>> unsafeRun(ZIOContext<R> ctx) {
if (ctx.signal.unsafeCompleted) {
return Exit.left(Interrupted(stackTrace));
}
try {
if (stackTrace != null) {
return _unsafeRun(ctx).then((exit) {
if (ctx.signal.unsafeCompleted && exit is! Left<Interrupted<E>, A>) {
return Exit.left(Interrupted(stackTrace));
}
return exit.mapLeft((cause) => cause.withTrace(stackTrace!));
});
}
return _unsafeRun(ctx).then((exit) {
if (ctx.signal.unsafeCompleted) {
return Exit.left(const Interrupted());
}
return exit;
});
} catch (err, stack) {
return Exit.left(Defect(err, stack, stackTrace));
}
}