According to MDN, 

> 
> the async function declaration defines an asynchronous function
> 
> 
> 

I understand it as the function will be treated as an async process just like `setTimeout` or some database request. For example, in the example below, the process should output "main" somewhere between the numbers.

```
let func2 = async () => {
   for (let i = 0; i < 51; i ++) {
       console.log(i);
   }
}

(async () => {
    func2();
    console.log("main");
})()

```

However, "main" is always consoled at the end like the whole process is synchronous. What am I understanding wrong?

If the synchronous code is still synchronous, what's the purpose of `async`? Only allows `await` inside it and provide some fancy way to return a `Promise`?