The goal of refactoring the code and app.js was not to get rid of the callback, the goal was to abstract all the complex logic related to encoding the data, making that request, and checking for errors. app.js should not care about any of that, it doesn't even need to know that an HTTP request was ever made. All the app.js should care about is passing an address to the function, and doing something with the result. The result being either an error message or the data, the formatted address, the latitude, and the longitude.