title: setTimeout call stack issue
body: <p>I learned about call stack in JS and I tried some code on my own, here is the problem:</p>
  
  <pre><code>const timestamp = Date.now(); // get current timestamp
  setTimeout(() =&gt; console.log(Date.now() - timestamp), 2000); // get difference
  Array(10000).fill(0).forEach((item, i) =&gt; console.log(i ** 3)); // simulating long-running task
  </code></pre>
  
  <p>The problem is after I run my code in browser, its take much more time than 2000 ms to log the difference in console, likely 4000-6000 ms, but I have 2000-2300 ms in my console. I learned, that setTimeout's timer starts after clearing call stack, following this logic, I should get 4000-5000 ms in my console.
  The question is why do I get 2000-2300 ms instead of 4000-6000?</p>