https://medium.com/@AlexanderObregon/mechanics-behind-async-iterators-and-for-await-of-in-javascript-1433c2436727