{"record":{"id":"12d4617cf62a71ef","repo":"diegosouzapw/OmniRoute","slug":"obsidian-api-request-timed-out-after-30s","errorCode":null,"errorMessage":"Obsidian API request timed out after 30s","messagePattern":"Obsidian API request timed out after 30s","errorType":"exception","errorClass":"ObsidianTimeoutError","httpStatus":null,"severity":"error","filePath":"src/lib/obsidian/api.ts","lineNumber":103,"sourceCode":"\n        if (error instanceof ObsidianServerError && retryCount < MAX_RETRIES - 1) {\n          lastError = error;\n          await sleep(Math.pow(2, retryCount) * 200);\n          return attempt(retryCount + 1);\n        }\n\n        throw error;\n      }\n\n      const ct = response.headers.get(\"content-type\") ?? \"\";\n      if (ct.includes(\"application/json\")) {\n        return response.json();\n      }\n      return response.text();\n    } catch (err) {\n      if (err instanceof Error && err.name === \"AbortError\") {\n        clearTimeout(timeout);\n        throw new ObsidianTimeoutError(\"Obsidian API request timed out after 30s\");\n      }\n      if (err instanceof ObsidianAuthError || err instanceof ObsidianNotFoundError) {\n        clearTimeout(timeout);\n        throw err;\n      }\n      if (err instanceof TypeError && err.message === \"fetch failed\") {\n        clearTimeout(timeout);\n        throw new ObsidianServerError(\n          `Cannot reach Obsidian at ${baseUrl}. Ensure the Local REST API plugin is running ` +\n          `and using the correct port. The REST API uses HTTP on port 27123 — do not use ` +\n          `port 27124 (that is a separate MCP endpoint with HTTPS). If connecting via ` +\n          `Tailscale, use http://<tailscale-ip>:27123.`\n        );\n      }\n      if (retryCount < MAX_RETRIES - 1) {\n        lastError = err instanceof Error ? err : new ObsidianServerError(String(err));\n        await sleep(Math.pow(2, retryCount) * 200);\n        return attempt(retryCount + 1);","sourceCodeStart":85,"sourceCodeEnd":121,"githubUrl":"https://github.com/diegosouzapw/OmniRoute/blob/a179ffed5bb2e0b883b9ae7214ce8717b2a94c4d/src/lib/obsidian/api.ts#L85-L121","documentation":"Error \"Obsidian API request timed out after 30s\" thrown in diegosouzapw/OmniRoute.","triggerScenarios":"Thrown at src/lib/obsidian/api.ts:103 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"}