https://levelup.gitconnected.com/best-practices-for-writing-efficient-asynchronous-code-in-javascript-2999d3bc1869