Skip to content

Commit

Permalink
Add { once: true } to all "abort" event listeners for `AbortContr…
Browse files Browse the repository at this point in the history
…oller` to automatically remove handlers after execution
  • Loading branch information
maksim.khramtsov committed May 16, 2024
1 parent e63057c commit 8d146c2
Show file tree
Hide file tree
Showing 7 changed files with 15 additions and 7 deletions.
8 changes: 8 additions & 0 deletions .changeset/silver-taxis-cover.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
"@effect/platform-browser": patch
"@effect/platform-bun": patch
"@effect/platform": patch
"effect": patch
---

Add `{ once: true }` to all `"abort"` event listeners for `AbortController` to automatically remove handlers after execution
2 changes: 1 addition & 1 deletion packages/effect/src/internal/runtime.ts
Original file line number Diff line number Diff line change
Expand Up @@ -290,7 +290,7 @@ export const unsafeRunPromiseExit = <R>(runtime: Runtime.Runtime<R>) =>
} else {
options.signal.addEventListener("abort", () => {
fiber.unsafeInterruptAsFork(fiber.id())
})
}, { once: true })
}
}
})
Expand Down
2 changes: 1 addition & 1 deletion packages/effect/test/Effect/promise.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ describe("Effect", () => {
const effect = Effect.promise<void>((signal) => {
signal.addEventListener("abort", () => {
aborted = true
})
}, { once: true })
return new Promise((resolve) => {
setTimeout(() => {
resolve()
Expand Down
4 changes: 2 additions & 2 deletions packages/effect/test/Effect/tryPromise.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ describe("Effect", () => {
const effect = Effect.tryPromise<void>((signal) => {
signal.addEventListener("abort", () => {
aborted = true
})
}, { once: true })
return new Promise((resolve) => {
setTimeout(() => {
resolve()
Expand All @@ -70,7 +70,7 @@ describe("Effect", () => {
try: (signal) => {
signal.addEventListener("abort", () => {
aborted = true
})
}, { once: true })
return new Promise((resolve) => {
setTimeout(() => {
resolve()
Expand Down
2 changes: 1 addition & 1 deletion packages/platform-browser/src/internal/http/client.ts
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ export const makeXMLHttpRequest = Client.makeDefault((request, url, signal, fibe
signal.addEventListener("abort", () => {
xhr.abort()
xhr.onreadystatechange = null
})
}, { once: true })
xhr.open(request.method, url.toString(), true)
xhr.responseType = fiber.getFiberRef(currentXHRResponseType)
Object.entries(request.headers).forEach(([k, v]) => {
Expand Down
2 changes: 1 addition & 1 deletion packages/platform-bun/src/internal/http/server.ts
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ export const make = (
))
request.signal.addEventListener("abort", () => {
runFork(fiber.interruptAsFork(Error.clientAbortFiberId))
})
}, { once: true })
})
}
handlerStack.push(handler)
Expand Down
2 changes: 1 addition & 1 deletion packages/platform/src/Http/App.ts
Original file line number Diff line number Diff line change
Expand Up @@ -155,7 +155,7 @@ export const toWebHandlerRuntime = <R>(runtime: Runtime.Runtime<R>) => {
const fiber = run(Effect.provideService(handled, ServerRequest.ServerRequest, req))
request.signal.addEventListener("abort", () => {
fiber.unsafeInterruptAsFork(ServerError.clientAbortFiberId)
})
}, { once: true })
})
}
}
Expand Down

0 comments on commit 8d146c2

Please sign in to comment.