diff --git a/libraries/deno-github-mod.ts b/libraries/deno-github-mod.ts index 6d9b4b7..c571549 100644 --- a/libraries/deno-github-mod.ts +++ b/libraries/deno-github-mod.ts @@ -30,9 +30,20 @@ export class SshKey { } } -export async function fetchKeys(username: string): Promise> { +export async function fetchKeys( + username: string, + timeout?: number, +): Promise> { const url = `https://github.com/${username}.keys`; - const response = await fetch(url, getFetchAutoProxyInit()); + const fetchTimeout = timeout || 10000; + const abortController = new AbortController(); + const timoutHandler = setTimeout(() => { + abortController.abort(`Timout ${fetchTimeout} ms`); + }, fetchTimeout); + const init = getFetchAutoProxyInit() || {}; + init.signal = abortController.signal; + const response = await fetch(url, init); const responseText = await response.text(); + clearTimeout(timoutHandler); return responseText.trim().split("\n").map((k) => SshKey.parseSshKey(k)); }