title: Does async make everything inside it asynchronous?
body: <p>According to MDN, </p>
  
  <blockquote>
    <p>the async function declaration defines an asynchronous function</p>
  </blockquote>
  
  <p>I understand it as the function will be treated as an async process just like <code>setTimeout</code> or some database request. For example, in the example below, the process should output "main" somewhere between the numbers.</p>
  
  <pre><code>let func2 = async () =&gt; {
     for (let i = 0; i &lt; 51; i ++) {
         console.log(i);
     }
  }
  
  (async () =&gt; {
      func2();
      console.log("main");
  })()
  </code></pre>
  
  <p>However, "main" is always consoled at the end like the whole process is synchronous. What am I understanding wrong?</p>
  
  <p>If the synchronous code is still synchronous, what's the purpose of <code>async</code>? Only allows <code>await</code> inside it and provide some fancy way to return a <code>Promise</code>?</p>