runSyncOrThrow<E, A> method
Try to run the ZIO synchronously, throwing a Future if it is asynchronous.
Implementation
A runSyncOrThrow<E, A>(EIO<E, A> zio) {
assert(!_disposed, 'Runtime has been disposed');
final signal = DeferredIO<Never>();
final exit = run(zio, interruptionSignal: signal);
if (exit is Future) {
signal.failCauseIO(const Interrupted()).runSyncOrThrow();
throw Interrupted<E>();
}
return exit.getOrElse((l) => throw l);
}