Right now our show GitHub user function fetches the user from the GitHub API and then prints the name and location to the console. Let's refactor this program such that the function only retrieves the user and then returns it to the caller, who can then decide what to do with it.
The first thing we need to do is get rid of the log statements and say, "Return user." When an async function is called, it returns a promise. When the async function returns a value, the promise will be resolved with that value.
In our case, the promise will be resolved with the user, which we just loaded from the GitHub API.
If I hover over the function call down here, I can confirm that our asynchronous function does indeed return a promise. This means we can build a promise chain using the .then method and do something with the result.
In this case, let's once more log the user's name and location to the console. Now that we've done the refactoring, let's run our program to make sure it still works.
We'll head over to the console and say, "Node async JS," and there we go. We still get the name and the location. There's one more thing we could do to our show GitHub user function. Since we're not doing anything with the user except returning it, we can inline this variable and simply say, "Return await response.JSON."
This example shows that it's quite easy to call an asynchronous function as part of a promise chain. Every async function returns a promise. It can simply call .then and .catch off of the return value.