- runWithDeadline() composes internal deadline + ctx.signal via AbortSignal.any();
threaded into both fetch() and a new abortableSleep() so retry chains
short-circuit on abort instead of finishing the current backoff first.
- New NCBI_TOTAL_DEADLINE_MS env var (default 60000) bounds worst-case tool
latency regardless of NCBI_MAX_RETRIES × backoff.
- New NcbiCallOptions { signal? } on every public NcbiService method.
- All 9 tools + database-info resource thread { signal: ctx.signal }.
- @cyanheads/mcp-ts-core 0.6.3 → 0.6.5.
- Tests: +97 lines api-client (signal forwarding, AbortSignal.any composition),
+277 lines ncbi-service (retry+signal, real-timer backoff races, deadline
timer cleanup parity), 9 tool-test assertion updates.