https://medium.com/@zalbinarifqan19/asynchronous-programming-in-javascript-vs-synchronous-programming-in-javascript-7798ef6d237d