так у тебя ведь функция func1 в конце вызывает саму себя и получается замкнутый круг, отсюда out of range.
Нужно ведь по логике какое то условие чтобы она перестала вызывать саму себя в какой то момент, разве нет?
И вообще зачем она вызывает саму себя в конце?
Ведь получается как бы два цикла один FOR который безошибочно работает другой цикл это функция сама себя вызывающая
или если это какой то постоянный процесс так нужно чтобы интервал между вызывами был нормальный,
может в длительности интервала проблема?
возможно строка setTimeout( function() { func1(); }, timeout1 ); должна находится внутри последнего else {}