diff --git a/packages/effect/src/Fiber.ts b/packages/effect/src/Fiber.ts index 9749cf8c02e..906e8e71174 100644 --- a/packages/effect/src/Fiber.ts +++ b/packages/effect/src/Fiber.ts @@ -275,7 +275,7 @@ export { * @since 2.0.0 * @category destructors */ -export const awaitAll: (fibers: Iterable>) => Effect.Effect, E>> = +export const awaitAll: (fibers: Iterable>) => Effect.Effect>> = fiberRuntime.fiberAwaitAll /** diff --git a/packages/effect/src/internal/fiberRuntime.ts b/packages/effect/src/internal/fiberRuntime.ts index 0d854d39375..2dbb8e4f0ed 100644 --- a/packages/effect/src/internal/fiberRuntime.ts +++ b/packages/effect/src/internal/fiberRuntime.ts @@ -3282,8 +3282,8 @@ export const currentSupervisor: FiberRef.FiberRef> = // circular with Fiber /* @internal */ -export const fiberAwaitAll = (fibers: Iterable>): Effect.Effect, E>> => - internalFiber._await(fiberAll(fibers)) +export const fiberAwaitAll = (fibers: Iterable>): Effect.Effect>> => + forEach(fibers, internalFiber._await) /** @internal */ export const fiberAll = (fibers: Iterable>): Fiber.Fiber, E> => ({ diff --git a/packages/effect/test/Fiber.test.ts b/packages/effect/test/Fiber.test.ts index e76e8c0c8bd..1bd813ccae8 100644 --- a/packages/effect/test/Fiber.test.ts +++ b/packages/effect/test/Fiber.test.ts @@ -210,7 +210,9 @@ describe("Fiber", () => { it.effect("awaitAll - stack safety", () => Effect.gen(function*($) { const result = yield* $(Fiber.awaitAll(fibers)) - assert.isUndefined(result) + assert.isArray(result) + assert(result.length === fibers.length) + result.forEach((_) => assert.isTrue(Exit.isSuccess(_) && _.value === undefined)) }), 10000) it.effect("joinAll - stack safety", () => Effect.gen(function*($) {