in case of processing a very large array e.g. Promise.all(A_VERY_LARGE_ARRAY_OF_XHR_PROMISE)
which would probably blow you browser memory by trying to send all requests at the same time
solution is limit the concurrent of requests, and wrap promise in thunk
Promise.allConcurrent(2)([()=>fetch('BLAH1'), ()=>fetch('BLAH2'),...()=>fetch('BLAHN')])
if set concurrent to 2, it will send request BLAH1 and BLAH2 at the same time
if BLAH1 return response and resolved, will immediatly send request to BLAH3
in this way promise sending at the same time always keep the limit 2 which we’ve just configed before
This is a great tool, thanks!
Not sure if it is intentional but I have noticed that if all the promises in a thread are rejected, the next thread is not executed. To prevent this I am catching the error and returning it.