code: def send_async(
              self,
              queue_identifier: QueueIdentifier,
              message: Message,
      ):
          
          recipient = queue_identifier.recipient
          if not is_binary_address(recipient):
              raise ValueError('Invalid address {}'.format(pex(recipient)))
  
          # These are not protocol messages, but transport specific messages
          if isinstance(message, (Delivered, Ping, Pong)):
              raise ValueError('Do not use send for {} messages'.format(message.__class__.__name__))
  
          messagedata = message.encode()
          if len(messagedata) > self.UDP_MAX_MESSAGE_SIZE:
              raise ValueError(
                  'message size exceeds the maximum {}'.format(self.UDP_MAX_MESSAGE_SIZE),
              )
  
          # message identifiers must be unique
          message_id = message.message_identifier
  
          # ignore duplicates
          if message_id not in self.messageids_to_asyncresults:
              self.messageids_to_asyncresults[message_id] = AsyncResult()
  
              queue = self.get_queue_for(queue_identifier)
              queue.put((messagedata, message_id))
              assert queue.is_set()
  
              self.log.debug(
                  'Message queued',
                  queue_identifier=queue_identifier,
                  queue_size=len(queue),
                  message=message,
              )
docs: Send a new ordered message to recipient.
  
          Messages that use the same `queue_identifier` are ordered.