The following line will cause an infinite loop if the action passed to every returns false.
return !result || list.length > 0;
As !result will be true even when the list is exhausted true will be passed to the pool indicating that is should keep looping.