# Async function

An async function is a function declared with the async keyword, and the await keyword is permitted within it. The async and await keywords enable asynchronous, promise-based behavior to be written in a cleaner style, avoiding the need to explicitly configure promise chains.


- Async functions can contain zero or more await expressions.

- Await expressions make promise-returning functions behave as though they're 
   synchronous by suspending execution until the returned promise is fulfilled or 
   rejected.

- Async functions always return a promise. If the return value of an async function is
  not explicitly a promise, it will be implicitly wrapped in a promise.

```
function foo() {
   return Promise.resolve(1)
}

``` 

[Run Code](https://jsfiddle.net/ecjg9kb6/)



