MCPcopy Create free account
hub / github.com/MoonshotAI/kimi-code / fetchWithTimeout

Function fetchWithTimeout

packages/telemetry/src/transport.ts:299–325  ·  view source on GitHub ↗
(
  fetchImpl: typeof fetch,
  url: string,
  init: RequestInit,
  timeoutMs: number,
  externalSignal?: AbortSignal,
)

Source from the content-addressed store, hash-verified

297}
298
299async function fetchWithTimeout(
300 fetchImpl: typeof fetch,
301 url: string,
302 init: RequestInit,
303 timeoutMs: number,
304 externalSignal?: AbortSignal,
305): Promise<Response> {
306 const controller = new AbortController();
307 const abortFromExternal = (): void => {
308 controller.abort(externalSignal?.reason);
309 };
310 const timeout = setTimeout(() => {
311 controller.abort(new Error('telemetry request timed out'));
312 }, timeoutMs);
313 timeout.unref?.();
314 if (externalSignal?.aborted === true) abortFromExternal();
315 externalSignal?.addEventListener('abort', abortFromExternal, { once: true });
316 try {
317 return await fetchImpl(url, {
318 ...init,
319 signal: controller.signal,
320 });
321 } finally {
322 clearTimeout(timeout);
323 externalSignal?.removeEventListener('abort', abortFromExternal);
324 }
325}
326
327function abortableSleep(ms: number, signal?: AbortSignal): Promise<void> {
328 if (signal?.aborted === true) return Promise.reject(abortError());

Callers 1

postMethod · 0.70

Calls 2

abortFromExternalFunction · 0.85
abortMethod · 0.65

Tested by

no test coverage detected