https://medium.com/@tylerdiraffaele/introduction-to-asynchronous-programming-in-javascript-d3373c8843f7