https://mysteryweevil.medium.com/mastering-async-await-patterns-and-best-practices-in-javascript-a4ce53cb0479