code: def send_async(
              self,
              queue_identifier: QueueIdentifier,
              message: Message,
      ):
          
          # even if transport is not started, can run to enqueue messages to send when it starts
          receiver_address = queue_identifier.recipient
  
          if not is_binary_address(receiver_address):
              raise ValueError('Invalid address {}'.format(pex(receiver_address)))
  
          # These are not protocol messages, but transport specific messages
          if isinstance(message, (Delivered, Ping, Pong)):
              raise ValueError(
                  'Do not use send_async for {} messages'.format(message.__class__.__name__),
              )
  
          self.log.debug(
              'Send async',
              receiver_address=pex(receiver_address),
              message=message,
              queue_identifier=queue_identifier,
          )
  
          self._send_with_retry(queue_identifier, message)
docs: Queue the message for sending to recipient in the queue_identifier
  
          It may be called before transport is started, to initialize message queues
          The actual sending is started only when the transport is started