L'approche "async / await" est un concept introduit en ECMAScript 7 (ou ES2016) et inspiré du C# (on le retrouve dans les langages les plus cools du marché tels que Python).
"async / await" est une "syntactic sugar" autour des Promises permettant d'indiquer explicitement les endroits où une fonction asynchrone attend le résultat d'une Promise.
En arrivant à ces endroits, un tick est déclenché et l'"event loop" reprend la main.
Quand la Promise est "resolved", la fonction reprend son exécution à l'endroit où elle a été interrompue dès que possible (i.e. : une fois que toutes les tâches empilées dans la "queue" de l'"event loop" sont dépilées).
On obtient alors le résultat suivant :
await ne peut être utilisé que dans une fonction async.
Une fonction async peut être appelée depuis n'importe quelle fonction et son type de retour sera une Promise.