https://towardsdev.com/the-software-engineers-interview-handbook-part-5-javascript-async-d6223e854dd9