Opus finding
Watchdog AbortController is created per-provider but never cleaned on fallback; composite signal not torn down
- src/providers/orchestrator.ts:340-365
AbortSignal.any creates a derived signal that listens on options.signal. When the per-provider attempt finishes and we fall back, that derived signal still holds a listener on options.signal. Over many fallbacks per long-lived caller signal, listener counts grow until the original signal is GC'd. This compounds with the retry-listener leak above.
Recommendation
Scope watchdogController + composite signal usage carefully or use AbortSignal.timeout(); ensure cleanup or document constraints.