Octane,
Почему же тогда тут setInterval не перекрывает setTimeout?
st=function(){return setTimeout(function(){console.log("setTimeout"); timeoutId=st()}, 3)}
si=function(){return setInterval(function(){console.log("setInterval")}, 3)}
stop=function(){setTimeout(function() {clearTimeout(timeoutId); clearInterval(intervalId)}, 3000)}
stop()
timeoutId=st()
intervalId=si()
i=100000000
console.time("cycle")
while(i--){}
console.timeEnd("cycle")
// cycle: 1796ms
// setTimeout
// setInterval
// setTimeout
// setInterval
// setTimeout
// setInterval
// ...