diff --git a/packages/extension-query/src/internal/QueryRunner.ts b/packages/extension-query/src/internal/QueryRunner.ts index 37198c6..bc659d3 100644 --- a/packages/extension-query/src/internal/QueryRunner.ts +++ b/packages/extension-query/src/internal/QueryRunner.ts @@ -106,10 +106,12 @@ export const make = ( const forkFetch = Queue.unbounded>>().pipe( Effect.flatMap(stateQueue => queryStateTag.pipe( Effect.flatMap(state => interrupt.pipe( - Effect.andThen(state.set(AsyncData.loading()).pipe( + Effect.andThen(Effect.addFinalizer(() => Ref.set(fiberRef, Option.none()).pipe( + Effect.andThen(Queue.shutdown(stateQueue)) + )).pipe( + Effect.andThen(state.set(AsyncData.loading())), Effect.andThen(run), - Effect.tap(() => Ref.set(fiberRef, Option.none())), - Effect.tap(() => Queue.shutdown(stateQueue)), + Effect.scoped, Effect.forkDaemon, )), @@ -139,10 +141,12 @@ export const make = ( const forkRefresh = Queue.unbounded>>().pipe( Effect.flatMap(stateQueue => interrupt.pipe( - Effect.andThen(setInitialRefreshState.pipe( + Effect.andThen(Effect.addFinalizer(() => Ref.set(fiberRef, Option.none()).pipe( + Effect.andThen(Queue.shutdown(stateQueue)) + )).pipe( + Effect.andThen(setInitialRefreshState), Effect.andThen(run), - Effect.tap(() => Ref.set(fiberRef, Option.none())), - Effect.tap(() => Queue.shutdown(stateQueue)), + Effect.scoped, Effect.forkDaemon, )),