123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- "use strict";
- var util = require("./util.js");
- var isPrimitive = util.isPrimitive;
- var wrapsPrimitiveReceiver = util.wrapsPrimitiveReceiver;
- 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["return"] =
- Promise.prototype.thenReturn = function (value) {
- if (value === undefined) return this.then(returnUndefined);
- if (wrapsPrimitiveReceiver && isPrimitive(value)) {
- return this._then(
- wrapper(value, 2),
- undefined,
- undefined,
- undefined,
- undefined
- );
- }
- return this._then(returner, undefined, undefined, value, undefined);
- };
- Promise.prototype["throw"] =
- Promise.prototype.thenThrow = function (reason) {
- if (reason === undefined) return this.then(throwUndefined);
- if (wrapsPrimitiveReceiver && isPrimitive(reason)) {
- return this._then(
- wrapper(reason, 1),
- undefined,
- undefined,
- undefined,
- undefined
- );
- }
- return this._then(thrower, undefined, undefined, reason, undefined);
- };
- };
|