https://medium.com/@siddhantjadhav445/understand-javascript-async-await-from-start-to-end-d92518874884