code: def wait(self):
          
          # disconnected before starting to wait
          if self.exception:
              raise self.exception
  
          if self.queue_consumer.stopped:
              raise RuntimeError(
                  "This consumer has been stopped, and can no longer be used"
              )
          if self.queue_consumer.connection.connected is False:
              # we can't just reconnect here. the consumer (and its exclusive,
              # auto-delete reply queue) must be re-established _before_ sending
              # any request, otherwise the reply queue may not exist when the
              # response is published.
              raise RuntimeError(
                  "This consumer has been disconnected, and can no longer "
                  "be used"
              )
  
          try:
              self.queue_consumer.get_message(self.correlation_id)
          except socket.error as exc:
              self.exception = exc
  
          # disconnected while waiting
          if self.exception:
              raise self.exception
          return self.body
docs: Makes a blocking call to its queue_consumer until the message
          with the given correlation_id has been processed.
  
          By the time the blocking call exits, self.send() will have been called
          with the body of the received message
          (see :meth:`~nameko.rpc.ReplyListener.handle_message`).
  
          Exceptions are raised directly.