GoonCord/utils/safeFetch.ts

17 lines
595 B
TypeScript
Raw Normal View History

2025-12-10 17:20:21 +01:00
// A really basic fetch wrapper which throws on non-ok response codes
export default async function safeFetch(input: RequestInfo | URL, options?: RequestInit, timeout = 10000) {
const req = await fetch(input, {
signal: timeoutSignal(timeout),
...options
});
if (!req.ok) throw new Error(`Request returned non-ok: ${req.status} ${req.statusText}`);
return req;
}
function timeoutSignal(ms: number): AbortSignal {
const controller = new AbortController();
setTimeout(() => controller.abort(`Timed out after ${ms}ms`), ms);
return controller.signal;
}