code: async def ws_handler(self, protocol, path):
          
          self.handshake_completed_event.set()
          await self.closed_event.wait()
docs: This is the main handler function for the 'websockets' implementation
          to call into. We just wait for close then return, and instead allow
          'send' and 'receive' events to drive the flow.