code: def send_async(self, msg, persist=False):
          
          if self.router.broker._thread == threading.currentThread():  # TODO
              raise SystemError('Cannot making blocking call on broker thread')
  
          receiver = Receiver(self.router, persist=persist, respondent=self)
          msg.dst_id = self.context_id
          msg.reply_to = receiver.handle
  
          _v and LOG.debug('%r.send_async(%r)', self, msg)
          self.send(msg)
          return receiver
docs: Arrange for `msg` to be delivered to this context, with replies
          directed to a newly constructed receiver. :attr:`dst_id
          <Message.dst_id>` is set to the target context ID, and :attr:`reply_to
          <Message.reply_to>` is set to the newly constructed receiver's handle.
  
          :param bool persist:
              If :data:`False`, the handler will be unregistered after a single
              message has been received.
  
          :param mitogen.core.Message msg:
              The message.
  
          :returns:
              :class:`Receiver` configured to receive any replies sent to the
              message's `reply_to` handle.