“use strict”; module.exports = function(Promise) { function returner() {

return this.value;

} function thrower() {

throw this.reason;

}

Promise.prototype = Promise.prototype.thenReturn = function (value) {

if (value instanceof Promise) value.suppressUnhandledRejections();
return this._then(
    returner, undefined, undefined, {value: value}, undefined);

};

Promise.prototype = Promise.prototype.thenThrow = function (reason) {

return this._then(
    thrower, undefined, undefined, {reason: reason}, undefined);

};

Promise.prototype.catchThrow = function (reason) {

if (arguments.length <= 1) {
    return this._then(
        undefined, thrower, undefined, {reason: reason}, undefined);
} else {
    var _reason = arguments[1];
    var handler = function() {throw _reason;};
    return this.caught(reason, handler);
}

};

Promise.prototype.catchReturn = function (value) {

if (arguments.length <= 1) {
    if (value instanceof Promise) value.suppressUnhandledRejections();
    return this._then(
        undefined, returner, undefined, {value: value}, undefined);
} else {
    var _value = arguments[1];
    if (_value instanceof Promise) _value.suppressUnhandledRejections();
    var handler = function() {return _value;};
    return this.caught(value, handler);
}

}; };