https://medium.com/@Marioskif/javascript-daily-tips-57-how-to-handle-javascript-asynchronous-iteration-1ec19f08ed0d