Finding
VCQA scored error-handling as 59/D with 211 findings, including 64 empty catch blocks and multiple swallowed promises/floating promises.
Examples from the report:
packages/sdk/src/voice/use-voice.ts: multiple empty catches and swallowed promises in the shared voice stack.
agents/coder/web/src/CodingTab.tsx: repeated empty catches around coder UI/runtime actions.
workers/api/src/agent-think.ts: empty catches in agent execution paths.
workers/api/src/index.ts and workers/api/src/lib/connectors/client.ts: floating promises.
Impact
This is not just score noise. Silent failures in voice, coder runtime, and agent execution make the product look idle or successful when work actually failed. It also makes production debugging harder because the error never reaches the existing event/error-log surfaces.
Acceptance criteria
- Empty catches are replaced with explicit benign comments only where failure is truly ignorable, or with structured logging/user-visible state where it is not.
- Floating promises are either awaited, returned, or intentionally detached with a named helper/comment and error handling.
- Voice/coder paths surface recoverable user-facing errors instead of silent no-ops.
- Add focused tests for at least one voice failure path, one coder UI failure path, and one worker/tool execution failure path.
- VCQA
error-handling materially improves from 59/D.
Finding
VCQA scored
error-handlingas59/Dwith 211 findings, including 64 empty catch blocks and multiple swallowed promises/floating promises.Examples from the report:
packages/sdk/src/voice/use-voice.ts: multiple empty catches and swallowed promises in the shared voice stack.agents/coder/web/src/CodingTab.tsx: repeated empty catches around coder UI/runtime actions.workers/api/src/agent-think.ts: empty catches in agent execution paths.workers/api/src/index.tsandworkers/api/src/lib/connectors/client.ts: floating promises.Impact
This is not just score noise. Silent failures in voice, coder runtime, and agent execution make the product look idle or successful when work actually failed. It also makes production debugging harder because the error never reaches the existing event/error-log surfaces.
Acceptance criteria
error-handlingmaterially improves from59/D.