ZIO<R, E, A>.raceAll constructor

ZIO<R, E, A>.raceAll(
  1. Iterable<ZIO<R, E, A>> others
)

Implementation

factory ZIO.raceAll(Iterable<ZIO<R, E, A>> others) => ZIO.from((ctx) {
      final signal = DeferredIO<Never>();
      final deferred = Deferred<E, A>();

      for (final zio in others) {
        zio
            .unsafeRun(ctx.withSignal(signal))
            .then(deferred.unsafeCompleteExit);
        if (deferred.unsafeCompleted) {
          break;
        }
      }

      return deferred.await<R>().unsafeRun(ctx).then(
            (exit) => signal
                .failCause(const Interrupted())
                .unsafeRun(ctx.withoutSignal)
                .then((_) => exit),
          );
    });