docs: def next(self):
          """Request next data container.
  
          This function call is blocking.
  
          Returns
          -------
          data : dict
              The data for this train, keyed by source name.
          meta : dict
              The metadata for this train, keyed by source name.
  
              This dictionary is populated for protocol version 1.0 and 2.2.
              For other protocol versions, metadata information is available in
              `data` dict.
  
          Raises
          ------
          TimeoutError
              If timeout is reached before receiving data.
          """
          if self._pattern == zmq.REQ and not self._recv_ready:
              self._socket.send(b'next')
              self._recv_ready = True
          try:
              msg = self._socket.recv_multipart(copy=False)
          except zmq.error.Again:
              raise TimeoutError(
                  'No data received from {} in the last {} ms'.format(
                      self._socket.getsockopt_string(zmq.LAST_ENDPOINT),
                      self._socket.getsockopt(zmq.RCVTIMEO)))
          self._recv_ready = False
          return self._deserialize(msg)