Так же есть вопрос: если пропишем setInterval 2000, то сто процентов будет вызвано то, что внутри сетинтервала, через 2000 миллисекунд или есть какое-то исключение?
100% что не раньше чем через 2000 миллисекунд но может быть сильно позже. Например:
setTimeout(function () {
console.log('Hi from past');
}, 500);
while(true) { }
в примере выше функция никогда не будет вызвана так как.... бесконечный цикл просто не позволит перейти к выполнению другого куска задач. Что бы понять почему так - читаем про event loop.