diegosouzapw/OmniRoute · error · Error
Browser did not become ready: ${lastError?.message || "CDP t
Error message
Browser did not become ready: ${lastError?.message || "CDP timeout"} What it means
Error "Browser did not become ready: ${lastError?.message || "CDP timeout"}" thrown in diegosouzapw/OmniRoute.
Source
Thrown at src/lib/vncSession/harvest.ts:274
const deadline = Date.now() + timeoutMs;
let lastError: Error | null = null;
while (Date.now() < deadline) {
const controller = new AbortController();
const timer = setTimeout(() => controller.abort(), 2_000);
try {
const version = await fetchJson(`http://127.0.0.1:${cdpPort}/json/version`, controller.signal);
if (version?.webSocketDebuggerUrl) return;
lastError = new Error("CDP endpoint did not return a websocket URL");
} catch (error) {
lastError = toError(error, "CDP endpoint is not ready");
} finally {
clearTimeout(timer);
}
await delay(500);
}
throw new Error(`Browser did not become ready: ${lastError?.message || "CDP timeout"}`);
}
export async function harvestFromContainer(
cdpPort: number,
provider: VncProviderEntry,
timeoutMs = 20_000
): Promise<HarvestResult> {
const controller = new AbortController();
const timeout = setTimeout(() => controller.abort(), timeoutMs);
let client: CdpClient | null = null;
try {
const version = await fetchJson(
`http://127.0.0.1:${cdpPort}/json/version`,
controller.signal
);
const debuggerUrl = version?.webSocketDebuggerUrl;
if (typeof debuggerUrl !== "string" || !debuggerUrl) {View on GitHub (pinned to a179ffed5b)
When it happens
Trigger: Thrown at src/lib/vncSession/harvest.ts:274 when the library encounters an invalid state.
Common situations: See trigger scenarios.
Understand the failure class
- Timeouts: ETIMEDOUT, deadlines, and hung requests — what actually expires when a request times out.
AI-assisted analysis of diegosouzapw/OmniRoute@a179ffed5b (2026-08-25).
Data as JSON: /api/errors/71fe867a00f99a5d.
Report an issue: GitHub.