It is not true that the connection will close if no protocol is agreed. This is not what browser clients do.
Base the EventTarget module on the WebSocket::Protocol::EventEmitter module.