code: def send_response(self, transaction):
          
          logger.debug("send_response - " + str(transaction.response))
          if transaction.response.type is None:
              if transaction.request.type == defines.Types["CON"] and not transaction.request.acknowledged:
                  transaction.response.type = defines.Types["ACK"]
                  transaction.response.mid = transaction.request.mid
                  transaction.response.acknowledged = True
                  transaction.completed = True
              elif transaction.request.type == defines.Types["NON"]:
                  transaction.response.type = defines.Types["NON"]
              else:
                  transaction.response.type = defines.Types["CON"]
                  transaction.response.token = transaction.request.token
  
          if transaction.response.mid is None:
              transaction.response.mid = self.fetch_mid()
              try:
                  host, port = transaction.response.destination
              except AttributeError:
                  return
              key_mid = str_append_hash(host, port, transaction.response.mid)
              self._transactions[key_mid] = transaction
  
          transaction.request.acknowledged = True
          return transaction
docs: Set the type, the token and eventually the MID for the outgoing response
  
          :type transaction: Transaction
          :param transaction: the transaction that owns the response
          :rtype : Transaction
          :return: the edited transaction