Запускается задача, если на определенном этапе происходит ошибка - она отлавливается. Далее происходит попытка ее устранить, если устранение ошибки удается, нужно таск перезапустить, иначе вылетаем.
Весь замес происходит в единичном таске, вне watcher'a.
P.S. Есть идея реализовать проверку на ошибку до запуска сборки, но эта проверка даст проседание по суммарному времени сборки. Этого хотелось бы избежать.