Parent
Sub-issue of #287 (multi-tab support implementation plan).
What to build
Make the shared device selector safe under concurrent use. Today a second selection request silently overwrites the in-flight continuation, leaking it and leaving the first requester's promise hung forever — unreachable with a single tab, but reachable once multiple tabs are live (and the existing code carries a TODO about exactly this).
A selection request arriving while another is in flight must fail fast with a distinct "busy" error, leaving the in-flight selection untouched.
Acceptance criteria
Blocked by
- None — can start immediately.
Parent
Sub-issue of #287 (multi-tab support implementation plan).
What to build
Make the shared device selector safe under concurrent use. Today a second selection request silently overwrites the in-flight continuation, leaking it and leaving the first requester's promise hung forever — unreachable with a single tab, but reachable once multiple tabs are live (and the existing code carries a TODO about exactly this).
A selection request arriving while another is in flight must fail fast with a distinct "busy" error, leaving the in-flight selection untouched.
Acceptance criteria
Blocked by