{"record":{"id":"dde922579aca9d09","repo":"diegosouzapw/OmniRoute","slug":"combo-timeout","errorCode":"COMBO_TIMEOUT","errorMessage":"Combo global timeout (${loopSafetyMs}ms) without a terminal response","messagePattern":"Combo global timeout \\((.+?)ms\\) without a terminal response","errorType":"http","errorClass":null,"httpStatus":504,"severity":"error","filePath":"open-sse/services/combo.ts","lineNumber":1159,"sourceCode":"      // actionable 504 instead of dying silently. `comboExpired` is flipped so the\n      // target loop stops launching new work; the existing comboExpired branch\n      // returns the aggregated 504.\n      const loopSafetyMs = comboTimeoutMs > 0 ? comboTimeoutMs : COMBO_LOOP_SAFETY_TIMEOUT_MS;\n      let loopSafetyFired = false;\n      let loopSafetyTimer: ReturnType<typeof setTimeout> | null = null;\n      const loopSafetyPromise = new Promise<Response>((resolve) => {\n        loopSafetyTimer = setTimeout(() => {\n          loopSafetyFired = true;\n          log.warn(\n            \"COMBO\",\n            `Combo loop safety timeout (${loopSafetyMs}ms) reached without a terminal response — force-terminating`\n          );\n          resolve(\n            errorResponseWithComboDiagnostics(\n              504,\n              `Combo global timeout (${loopSafetyMs}ms) without a terminal response`,\n              buildComboDiag(\"combo_timeout\"),\n              { code: \"COMBO_TIMEOUT\", type: \"server_error\" }\n            )\n          );\n        }, loopSafetyMs);\n        loopSafetyTimer.unref?.();\n      });\n      const runningTasks = new Set<Promise<void>>();\n      let anySuccess = false;\n      // #10681: steps already recorded as dispatched (so per-target retries do not\n      // duplicate the decision).\n      const dispatchedTargets = new Set<string>();\n      // G1: flip comboExpired as soon as the safety timer fires so the next loop\n      // iteration breaks instead of launching more targets after the budget, and\n      // abort every in-flight target so a hung upstream actually gets cancelled\n      // (not just \"response stops\").\n      const markLoopExpiredIfSafetyFired = () => {\n        if (loopSafetyFired) {\n          comboExpired = true;\n          for (const [, ac] of abortControllers.entries()) ac.abort();","sourceCodeStart":1141,"sourceCodeEnd":1177,"githubUrl":"https://github.com/diegosouzapw/OmniRoute/blob/a179ffed5bb2e0b883b9ae7214ce8717b2a94c4d/open-sse/services/combo.ts#L1141-L1177","documentation":"Error \"Combo global timeout (${loopSafetyMs}ms) without a terminal response\" thrown in diegosouzapw/OmniRoute.","triggerScenarios":"Thrown at open-sse/services/combo.ts:1159 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"}