From b5554db36c4dd6f64fa5e6a62a29b2759c54217a Mon Sep 17 00:00:00 2001 From: Tim Date: Fri, 5 Jul 2024 11:28:38 +1200 Subject: [PATCH] allow Stream run fiber to close before trying to interrupt it (#3176) --- .changeset/few-pears-reply.md | 5 +++++ packages/effect/src/internal/channel/channelExecutor.ts | 7 ++++++- 2 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 .changeset/few-pears-reply.md diff --git a/.changeset/few-pears-reply.md b/.changeset/few-pears-reply.md new file mode 100644 index 0000000000..33d7b1fff0 --- /dev/null +++ b/.changeset/few-pears-reply.md @@ -0,0 +1,5 @@ +--- +"effect": patch +--- + +allow Stream run fiber to close before trying to interrupt it diff --git a/packages/effect/src/internal/channel/channelExecutor.ts b/packages/effect/src/internal/channel/channelExecutor.ts index 9ef5a828bb..64b5bfb83c 100644 --- a/packages/effect/src/internal/channel/channelExecutor.ts +++ b/packages/effect/src/internal/channel/channelExecutor.ts @@ -1141,7 +1141,12 @@ export const runScoped = ( Effect.forkScoped(restore(run(channelDeferred, scopeDeferred, child))), Effect.flatMap((fiber) => pipe( - Effect.addFinalizer(() => Deferred.succeed(scopeDeferred, void 0)), + Scope.addFinalizer( + parent, + Deferred.succeed(scopeDeferred, void 0).pipe( + Effect.zipRight(Effect.yieldNow()) + ) + ), Effect.zipRight(restore(Deferred.await(channelDeferred))), Effect.zipLeft(Fiber.inheritAll(fiber)) )