Use vanilla AbortController for compat

This commit is contained in:
William Oldham 2024-04-15 20:10:44 +01:00
parent 3c4d84db5c
commit a9d80ddf24

View file

@ -153,6 +153,12 @@ const tmdbHeaders = {
Authorization: `Bearer ${apiKey}`, Authorization: `Bearer ${apiKey}`,
}; };
function abortOnTimeout(timeout: number): AbortSignal {
const controller = new AbortController();
setTimeout(() => controller.abort(), timeout);
return controller.signal;
}
async function get<T>(url: string, params?: object): Promise<T> { async function get<T>(url: string, params?: object): Promise<T> {
if (!apiKey) throw new Error("TMDB API key not set"); if (!apiKey) throw new Error("TMDB API key not set");
try { try {
@ -162,7 +168,7 @@ async function get<T>(url: string, params?: object): Promise<T> {
params: { params: {
...params, ...params,
}, },
signal: AbortSignal.timeout(5000), signal: abortOnTimeout(5000),
}); });
} catch (err) { } catch (err) {
return mwFetch<T>(encodeURI(url), { return mwFetch<T>(encodeURI(url), {
@ -171,7 +177,7 @@ async function get<T>(url: string, params?: object): Promise<T> {
params: { params: {
...params, ...params,
}, },
signal: AbortSignal.timeout(30000), signal: abortOnTimeout(30000),
}); });
} }
} }