title: What stops Node.js from being asynchronous
body: <p>When you're working with Node.js you're working with asynchronous programming.</p>
  
  <p>To handle a hierachy you obviously uses callbacks. I'm also aware of some functions is blocking the main event loop, like readFileSync() for instance.. </p>
  
  <p>But I've noticed that something even so simple as a for loop is blocking the main event loop as well.</p>
  
  <p>Example:</p>
  
  <pre><code>function func1() {
      for(var i = 0; i &lt; 1000000000; i++) {
      }
      console.log("func1")
  }
  function func2() {
      console.log('func2')
  }
  
  func1()
  func2()
  </code></pre>
  
  <p>In this case will 'func1' allways be printed before 'func2' and first when the loop is done. This doesn't seem asynchronous to me. I mean why are we waiting for func1 to finish before running func2?</p>
  
  <p>Is there any list of what actions that blocks the main event loop or can somebody explain why this is happening?</p>