code: function (onFulfilled) {
                  return this.then(function (array) {
                      // array may contain promises, so resolve its contents.
                      return all(array, function (array) {
                          return onFulfilled.apply(undef, array);
                      });
                  });
              }
docs: Assumes that this promise will fulfill with an array, and arranges
  for the onFulfilled to be called with the array as its argument list
  i.e. onFulfilled.apply(undefined, array).
  @param {function} onFulfilled function to receive spread arguments
  @return {Promise}