The minimal websocket surface this client depends on: assignable lifecycle handlers plus
send/close. Declaring the seam as an interface (rather than the platform WebSocket)
lets unit tests inject a fully in-memory fake that captures outbound frames and drives the
handlers with AssemblyAI-shaped events — no websocket, no network.
The minimal websocket surface this client depends on: assignable lifecycle handlers plus
send/close. Declaring the seam as an interface (rather than the platformWebSocket) lets unit tests inject a fully in-memory fake that captures outbound frames and drives the handlers with AssemblyAI-shaped events — no websocket, no network.