Now, before we actually use async/await, we're going to go ahead and run through an example that just uses promises. We're going to use techniques we already know to set up a little example project. Now, when people hear about async/await, they think that they need to forget everything they know about callbacks and promises, and that is not true. Async/await is not a third option; it is more like an enhancement for promises. We're going to go through an example using just regular old promises, things you already know how to do. Then we're going to see how async/await can enhance that code. So, to kick things off, we do need a place to put all of this. I'm going to make a brand new project on my Desktop, async-await.
We can crack that open in our editor and make sure to crack it open in your terminal as well. Now, the goal here is to just make a very simple project. We're not going to need any Node modules for this one and we are just going to need a single file. This file can sit in the root of the project and we'll just call it app-promises.js:

This is going to be the version of our application that just uses promises. Now, before we go any further, I do want to give you a quick idea as to what the chapter is going to look like. We're going to go through three distinct things: first up, we are going to create a very contrived example and this is going to allow us to learn how to use async/await without a lot of overhead or baggage. So, we're going to be creating constants, like users, which would just be an array of objects and constants, like grades; also an array of objects and this is going to be what a database would look like.
const users = [];
const grades = [];
Obviously, there is nothing asynchronous about accessing some property from an array, so we're going to go ahead and create some new promises to turn a synchronous process into an asynchronous one.