code: def send_message(self, message):
          
          if isinstance(message, Request):
              request = self._requestLayer.send_request(message)
              request = self._observeLayer.send_request(request)
              request = self._blockLayer.send_request(request)
              transaction = self._messageLayer.send_request(request)
              self.send_datagram(transaction.request)
              if transaction.request.type == defines.Types["CON"]:
                  self._start_retransmission(transaction, transaction.request)
          elif isinstance(message, Message):
              message = self._observeLayer.send_empty(message)
              message = self._messageLayer.send_empty(None, None, message)
              self.send_datagram(message)
docs: Prepare a message to send on the UDP socket. Eventually set retransmissions.
  
          :param message: the message to send