docs: function reduce(promise, reduceFunc /*, initialValue */) {
              var args = slice.call(arguments, 1);
  
              return well(promise, function (array) {
                  var total;
  
                  total = array.length;
  
                  // Wrap the supplied reduceFunc with one that handles promises and then
                  // delegates to the supplied.
                  args[0] = function (current, val, i) {
                      return well(current, function (c) {
                          return well(val, function (value) {
                              return reduceFunc(c, value, i, total);
                          });
                      });
                  };
  
                  return reduceArray.apply(array, args);
              });
          }