From fa4caae12fcbffb2d56aa0458ff6ddeaf4d22886 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 interruptWithDeferred + takeWhile --- packages/effect/src/internal/stream.ts | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/packages/effect/src/internal/stream.ts b/packages/effect/src/internal/stream.ts index fcac7602d2..beec45a7fb 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,11 @@ 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]!) + haltWhenDeferred(halts[index]!) ) ), { concurrency: "unbounded" }