code: def maybe_sendraw_with_result(
              self,
              recipient: Address,
              messagedata: bytes,
              message_id: UDPMessageID,
      ) -> AsyncResult:
          
          async_result = self.messageids_to_asyncresults.get(message_id)
          if async_result is None:
              async_result = AsyncResult()
              self.messageids_to_asyncresults[message_id] = async_result
  
          host_port = self.get_host_port(recipient)
          self.maybe_sendraw(host_port, messagedata)
  
          return async_result
docs: Send message to recipient if the transport is running.
  
          Returns:
              An AsyncResult that will be set once the message is delivered. As
              long as the message has not been acknowledged with a Delivered
              message the function will return the same AsyncResult.