You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
46 lines
1.4 KiB
46 lines
1.4 KiB
"use strict"; |
|
module.exports = function(Promise) { |
|
function returner() { |
|
return this.value; |
|
} |
|
function thrower() { |
|
throw this.reason; |
|
} |
|
|
|
Promise.prototype["return"] = |
|
Promise.prototype.thenReturn = function (value) { |
|
if (value instanceof Promise) value.suppressUnhandledRejections(); |
|
return this._then( |
|
returner, undefined, undefined, {value: value}, undefined); |
|
}; |
|
|
|
Promise.prototype["throw"] = |
|
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); |
|
} |
|
}; |
|
};
|
|
|