https://medium.com/@siddhantjadhav445/understanding-asynchronous-javascript-with-simple-analogy-9162b4ac2de0