lib/vow.js
function(onFulfilled, onRejected, onProgress, ctx) {
        this
            .then(onFulfilled, onRejected, onProgress, ctx)
            .fail(throwException);
    }
function(onFulfilled, onRejected, onProgress, ctx) {
        this
            .then(onFulfilled, onRejected, onProgress, ctx)
            .fail(throwException);
    }
function ( onFulfilled , onRejected , onProgress , ctx ) { this . then ( onFulfilled , onRejected , onProgress , ctx ) . fail ( throwException ) ; }
Like `then`, but terminates a chain of promises.
If the promise has been rejected, this method throws it's "reason" as an exception in a future turn of the event loop.

@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 {Function} [onProgress] Callback that will be invoked with a provided value after the promise has been notified
@param {Object} [ctx] Context of the callbacks execution

@example
```js
var defer = vow.defer();
defer.reject(Error('Internal error'));
defer.promise().done(); // exception to be thrown
```
Like then but terminates a chain of promises . If the promise has been rejected this method throws it s reason as an exception in a future turn of the event loop .