Skip to content

Commit f3a0dda

Browse files
authored
chore: get rid of AbortController when calling queries on server (#14338)
1 parent c0a9d9a commit f3a0dda

File tree

2 files changed

+8
-17
lines changed

2 files changed

+8
-17
lines changed

packages/kit/src/runtime/app/server/remote/query.js

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -72,21 +72,15 @@ export function query(validate_or_fn, maybe_fn) {
7272

7373
const { event, state } = get_request_store();
7474

75-
const abort_controller = new AbortController();
7675
/** @type {Promise<any> & Partial<RemoteQuery<any>>} */
77-
const promise = get_response(
78-
__.id,
79-
arg,
80-
state,
81-
() => run_remote_function(event, state, false, arg, validate, fn),
82-
abort_controller.signal
76+
const promise = get_response(__.id, arg, state, () =>
77+
run_remote_function(event, state, false, arg, validate, fn)
8378
);
8479

8580
promise.catch(() => {});
8681

8782
/** @param {Output} value */
8883
promise.set = (value) => {
89-
abort_controller.abort();
9084
const { state } = get_request_store();
9185
const refreshes = state.refreshes;
9286

@@ -97,7 +91,7 @@ export function query(validate_or_fn, maybe_fn) {
9791
}
9892

9993
const cache_key = create_remote_cache_key(__.id, stringify_remote_arg(arg, state.transport));
100-
refreshes[cache_key] = Promise.resolve(value);
94+
refreshes[cache_key] = (state.remote_data ??= {})[cache_key] = Promise.resolve(value);
10195
};
10296

10397
promise.refresh = () => {
@@ -118,7 +112,6 @@ export function query(validate_or_fn, maybe_fn) {
118112
};
119113

120114
promise.withOverride = () => {
121-
abort_controller.abort();
122115
throw new Error(`Cannot call '${__.name}.withOverride()' on the server`);
123116
};
124117

packages/kit/src/runtime/app/server/remote/shared.js

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -66,16 +66,14 @@ export function create_validator(validate_or_fn, maybe_fn) {
6666
* @param {any} arg
6767
* @param {RequestState} state
6868
* @param {() => Promise<T>} get_result
69-
* @param {AbortSignal | undefined=} signal
7069
* @returns {Promise<T>}
7170
*/
72-
export async function get_response(id, arg, state, get_result, signal) {
73-
if (signal) {
74-
await new Promise((r) => setTimeout(r, 0));
75-
if (signal.aborted) throw new DOMException('The operation was aborted.', 'AbortError');
76-
}
77-
const cache_key = create_remote_cache_key(id, stringify_remote_arg(arg, state.transport));
71+
export async function get_response(id, arg, state, get_result) {
72+
// wait a beat, in case `myQuery().set(...)` is immediately called
73+
// eslint-disable-next-line @typescript-eslint/await-thenable
74+
await 0;
7875

76+
const cache_key = create_remote_cache_key(id, stringify_remote_arg(arg, state.transport));
7977
return ((state.remote_data ??= {})[cache_key] ??= get_result());
8078
}
8179

0 commit comments

Comments
 (0)