главный setInterval игнорирует setTimeout внутри функции

Подскажите пожалуйста, как правильно должен выглядеть код. По задумке данный код должен запускать главную функцию main с интервалом с 100 мс и работать, пока на странице не закончатся элементы .choose-timeslot По завершению останавливаю setInterval в блоке else

Проблема в том, что функция main запускается с интервалом в 100 мс и абсолютно игнорирует таймеры внутри других функций

let interval = setInterval(main, 100)

function confirmClick(){
    const footer = document.querySelector('.timeslots__footer'),
        confirmBtn = footer.querySelector('.solid.noselect');
        confirmBtn.click()
        setTimeout(closeWindow, 2000)
}

function closeWindow(){
    document.querySelector('.transparent.close-icon').click()
    console.log('no slots')
    document.querySelector('.choose-timeslot').click()
    setTimeout(choiceClick, 1000)
}

function choiceClick(){
    const tableDocs = document.querySelector('tbody-observe'),
        doc = tableDocs.document.querySelector('.choose-timeslot');
        doc.click()    
}

function main(){
    if (document.querySelector('.choose-timeslot')) {
        document.querySelector('.choose-timeslot').click()
        if (document.querySelector('.timeslot__label')) {
            document.querySelector('.timeslot__label').click()
            console.log('click to time slot')
            setTimeout(confirmClick, 200)
        } else {
            setTimeout(()=>{
                closeWindow();
            }, 1500);   
        }

    } else {
        console.log('done')
        clearInterval(interval)
    }
}


Ответы (0 шт):