“use strict”; var util = require(“./util.js”); var isPrimitive = util.isPrimitive;

module.exports = function(Promise) { var returner = function () {

return this;

}; var thrower = function () {

throw this;

}; var returnUndefined = function() {}; var throwUndefined = function() {

throw undefined;

};

var wrapper = function (value, action) {

if (action === 1) {
    return function () {
        throw value;
    };
} else if (action === 2) {
    return function () {
        return value;
    };
}

};

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

if (value === undefined) return this.then(returnUndefined);

if (isPrimitive(value)) {
    return this._then(
        wrapper(value, 2),
        undefined,
        undefined,
        undefined,
        undefined
   );
} else if (value instanceof Promise) {
    value._ignoreRejections();
}
return this._then(returner, undefined, undefined, value, undefined);

};

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

if (reason === undefined) return this.then(throwUndefined);

if (isPrimitive(reason)) {
    return this._then(
        wrapper(reason, 1),
        undefined,
        undefined,
        undefined,
        undefined
   );
}
return this._then(thrower, undefined, undefined, reason, undefined);

}; };