Detach the listener and drop any buffered frames without replaying them.
Detach the handshake listener and replay any frames buffered between the
room-joined settle and now, so no early signal is lost. Call once, after
the steady-state message handler is attached.
Drives the connect-and-join exchange, resolving once the server confirms the room.
Remarks
run connects the Transport and waits for a
RoomJoinedframe, rejecting on anErrorframe or afterjoinTimeoutMs. The message listener stays attached after settling and buffers any frames that arrive in the same batch asRoomJoined(the transport can deliver several synchronously); those are replayed to steady-state handling via drain.