From 35b310bd3fd666d818233e0c6f89441dfddc175c Mon Sep 17 00:00:00 2001 From: Hatter Jiang Date: Sun, 19 Jan 2025 18:15:28 +0800 Subject: [PATCH] feat: update deno-fetch-auto-proxy-mod.ts --- libraries/deno-fetch-auto-proxy-mod.ts | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/libraries/deno-fetch-auto-proxy-mod.ts b/libraries/deno-fetch-auto-proxy-mod.ts index 7cf4104..24270d6 100644 --- a/libraries/deno-fetch-auto-proxy-mod.ts +++ b/libraries/deno-fetch-auto-proxy-mod.ts @@ -16,3 +16,23 @@ export function getFetchAutoProxyInit(): RequestInit | undefined { } return undefined; } + +export async function fetchWithTimoutAndAutoProxy( + input: URL | Request | string, + timeout?: number, + initCallback?: (init: RequestInit) => RequestInit, +): Promise { + const fetchTimeout = timeout || 10000; + const abortController = new AbortController(); + const timoutHandler = setTimeout(() => { + abortController.abort(`Timout ${fetchTimeout} ms`); + }, fetchTimeout); + let init = getFetchAutoProxyInit() || {}; + init.signal = abortController.signal; + if (initCallback) { + init = initCallback(init); + } + const response = await fetch(input, init); + clearTimeout(timoutHandler); + return response; +}