Друзья, спасибо что натолкнули на решение. Сам прикинул что виснуть намертво не должно, значит где то зацикливается. Получилось что такая же функция setInterval() каждые 300 миллисекунд отслеживает состояние элементов, и внутри нее запускался мой скрипт который каждые 5 миллисекунд пробегал по дивам. Реши проблему остановкой таймера когда все дивы погаснут.