docs: async def recvfrom(self):
          """
          Receive the next datagram.
  
          The return value is a `(bytes, component)` tuple where `bytes` is a
          bytes object representing the data received and `component` is the
          component on which the data was received.
  
          If the connection is not established, a `ConnectionError` is raised.
          """
          if not len(self._nominated):
              raise ConnectionError('Cannot receive data, not connected')
  
          result = await self._queue.get()
          if result[0] is None:
              raise ConnectionError('Connection lost while receiving data')
          return result