From d7bc4531fa04395b2cb85d9c4b1d781b6856e6c7 Mon Sep 17 00:00:00 2001 From: bowzee Date: Tue, 2 Jul 2024 14:27:25 +0300 Subject: [PATCH] fix(Stream/raceAll): use haltWhenDeferred instead of takeWhile --- packages/effect/src/internal/stream.ts | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/packages/effect/src/internal/stream.ts b/packages/effect/src/internal/stream.ts index fcac7602d2..29c053ff8e 100644 --- a/packages/effect/src/internal/stream.ts +++ b/packages/effect/src/internal/stream.ts @@ -4697,7 +4697,6 @@ export const raceAll = >>( return unwrap( Effect.gen(function*() { const halts = yield* Effect.all(streams.map(() => Deferred.make())) - let finishes = streams.map(() => false) return mergeAll( streams.map((s, index) => s.pipe( @@ -4706,13 +4705,12 @@ export const raceAll = >>( return Effect.void } finished = true - finishes = finishes.map((_, i) => !(i === index)) return Effect.all( halts.map((def, i) => i === index ? Effect.void : Deferred.succeed(def, void 0)) ) }), - takeWhile(() => !finishes[index]), - interruptWhenDeferred(halts[index]!) + interruptWhenDeferred(halts[index]!), + haltWhenDeferred(halts[index]!) ) ), { concurrency: "unbounded" }