function checkDone() {
                if (eventsLeft === 0) {
                    callback(eventArgs);
                }
            }
asynchronous parallel version of Array.prototype.forEach
@param array the array to iterate over
@param fn the function to apply to each item in the array, function
       has two argument, the first is the item value, the second a
       callback function
@param callback the function to call when the forEach has ended