Nice writing. You could also add how to wait for more than one async call in parallel. With your implementation your are waiting for the first response and then for the next response and they could be done in parallel by using Promise.all. I know not so nice, but it should be faster.