Pare um DispatchQueue em execução no encadeamento principal

Eu tenho esse bloco de código:

    DispatchQueue.main.asyncAfter(deadline: .now() + (delay * Double(isDelayAccounted.hashValue)) + extraDelay) {
        self.isShootingOnHold = false
        self.shoot()
        self.shootingEngine = Timer.scheduledTimer(timeInterval: (Double(60)/Double(self.ratePerMinute)), target: self, selector: #selector(ShootingEnemy.shoot), userInfo: nil, repeats: true)   
    }

Agora, quero poder interromper a execução deste thread. Como posso impedir que seja executado? Por exemplo, após 3 segundos, eu decido que não quero mais que seja executado, então quero interrompê-lo.

questionAnswers(2)

yourAnswerToTheQuestion