def METHOD_NAME(self, timeout=30):
    """
    Try to send the message until it either has been received or
    hits timeout.
    :param timeout: Timeout to retry receiving the message
    :type timeout: ``int``
    :return: The received message
    :rtype: ``object`` or ``str`` or ``zmq.sugar.frame.Frame``
    """
    return retry_until_timeout(
        exception=zmq.ZMQError,
        item=self._socket.recv,
        kwargs={"flags": zmq.NOBLOCK},
        timeout=timeout,
        raise_on_timeout=True,
    )