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.
		
		
		
		
		
			
		
			
				
					47 lines
				
				1.4 KiB
			
		
		
			
		
	
	
					47 lines
				
				1.4 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								"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);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								};
							 |