LiveKit's Room.disconnect() tears down WebRTC but leaves .on() handlers attached. Every connect() registers ~15 event handlers, which accumulate on orphaned Room instances during rapid channel switches or HMR, causing MaxListenersExceededWarning. Added destroyRoom() helper that calls removeAllListeners() before disconnect() at all four teardown sites.