{"record":{"id":"9401bd9d39135890","repo":"diegosouzapw/OmniRoute","slug":"timeout-9401bd","errorCode":"TIMEOUT","errorMessage":"${error.message}","messagePattern":"\\$\\{error\\.message\\}","errorType":"exception","errorClass":"SafeOutboundFetchError","httpStatus":null,"severity":"error","filePath":"src/shared/network/safeOutboundFetch.ts","lineNumber":258,"sourceCode":"  } catch {\n    // Ignore body cancellation errors when preparing a retry.\n  }\n}\n\nfunction normalizeFetchFailure(\n  error: unknown,\n  targetUrl: string,\n  method: string,\n  attempts: number\n): SafeOutboundFetchError {\n  if (error instanceof SafeOutboundFetchError) {\n    error.attempts = attempts;\n    return error;\n  }\n\n  if (error instanceof FetchTimeoutError) {\n    return new SafeOutboundFetchError(error.message, {\n      code: \"TIMEOUT\",\n      url: targetUrl,\n      method,\n      attempts,\n      timeoutMs: error.timeoutMs,\n      isRetryable: true,\n      cause: error,\n    });\n  }\n\n  const message = error instanceof Error ? error.message : String(error);\n  const code = error && typeof error === \"object\" ? (error as { code?: string }).code : undefined;\n\n  return new SafeOutboundFetchError(message || `Outbound request failed for ${targetUrl}`, {\n    code: \"NETWORK_ERROR\",\n    url: targetUrl,\n    method,\n    attempts,\n    isRetryable: code !== \"PROXY_UNREACHABLE\",","sourceCodeStart":240,"sourceCodeEnd":276,"githubUrl":"https://github.com/diegosouzapw/OmniRoute/blob/a179ffed5bb2e0b883b9ae7214ce8717b2a94c4d/src/shared/network/safeOutboundFetch.ts#L240-L276","documentation":"Error \"${error.message}\" thrown in diegosouzapw/OmniRoute.","triggerScenarios":"Thrown at src/shared/network/safeOutboundFetch.ts:258 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"a179ffed5bb2e0b883b9ae7214ce8717b2a94c4d","analyzedAt":"2026-08-25T18:35:09.898Z","schemaVersion":2},"datasetVersion":"2026-08-25T21:54:21.419Z"}