code: function(onFulfilled, onRejected, ctx) {
          return this.then(
              function(val) {
                  return onFulfilled.apply(this, val);
              },
              onRejected,
              ctx);
      }
docs: Like `promise.then`, but "spreads" the array into a variadic value handler.
  It is useful with the `vow.all` and the `vow.allResolved` methods.
  
  @param {Function} [onFulfilled] Callback that will be invoked with a provided value after the promise has been fulfilled
  @param {Function} [onRejected] Callback that will be invoked with a provided reason after the promise has been rejected
  @param {Object} [ctx] Context of the callbacks execution
  @returns {vow:Promise}
  
  @example
  ```js
  var defer1 = vow.defer(),
  defer2 = vow.defer();
  
  vow.all([defer1.promise(), defer2.promise()]).spread(function(arg1, arg2) {
  // arg1 is "1", arg2 is "'two'" here
  });
  
  defer1.resolve(1);
  defer2.resolve('two');
  ```