function processOne() {
                var item = array.pop();
                fn(item, function(result, err) {
                    if (array.length > 0) {
                        processOne();
                    } else {
                        callback(result, err);
                    }
                });
            }
asynchronous sequential 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