code: def _start_retransmission(self, transaction, message):
          
          with transaction:
              if message.type == defines.Types['CON']:
                  future_time = random.uniform(defines.ACK_TIMEOUT, (defines.ACK_TIMEOUT * defines.ACK_RANDOM_FACTOR))
                  transaction.retransmit_stop = threading.Event()
                  self.to_be_stopped.append(transaction.retransmit_stop)
                  transaction.retransmit_thread = threading.Thread(target=self._retransmit,
                                                                   name=str('%s-Retry-%d' % (threading.current_thread().name, message.mid)),
                                                                   args=(transaction, message, future_time, 0))
                  transaction.retransmit_thread.start()
docs: Start the retransmission task.
  
          :type transaction: Transaction
          :param transaction: the transaction that owns the message that needs retransmission
          :type message: Message
          :param message: the message that needs the retransmission task