Compare commits

...

1 Commits

Author SHA1 Message Date
Jarred Sumner
7589b86f7d Make passing an signal: AbortSignal.timeout to fetch implicitly set timeout: false 2025-01-28 18:40:47 -08:00
3 changed files with 22 additions and 0 deletions

View File

@@ -5839,6 +5839,12 @@ extern "C" void JSC__JSGlobalObject__queueMicrotaskJob(JSC__JSGlobalObject* arg0
WTFMove(microtaskArgs[3]));
}
extern "C" bool WebCore__AbortSignal__isTimeout(const WebCore__AbortSignal* arg0)
{
const WebCore::AbortSignal* abortSignal = reinterpret_cast<const WebCore::AbortSignal*>(arg0);
return abortSignal->hasActiveTimeoutTimer();
}
extern "C" WebCore::AbortSignal* WebCore__AbortSignal__new(JSC__JSGlobalObject* globalObject)
{
Zig::GlobalObject* thisObject = JSC::jsCast<Zig::GlobalObject*>(globalObject);

View File

@@ -2224,6 +2224,11 @@ pub const AbortSignal = extern opaque {
pub const name = "WebCore::AbortSignal";
pub const namespace = "WebCore";
extern fn WebCore__AbortSignal__isTimeout(*const AbortSignal) bool;
pub fn isTimeout(this: *const AbortSignal) bool {
return WebCore__AbortSignal__isTimeout(this);
}
pub fn listen(
this: *AbortSignal,
comptime Context: type,

View File

@@ -3006,6 +3006,17 @@ pub const Fetch = struct {
return JSPromise.rejectedPromiseValue(globalThis, err);
}
// If you do AbortSignal.timeout
// and you don't set `timeout: false`
// you probably meant to use the AbortSignal's timeout instead.
if (!disable_timeout) {
if (signal) |signal_| {
if (signal_.isTimeout()) {
disable_timeout = true;
}
}
}
if (globalThis.hasException()) {
is_error = true;
return .zero;