Skip to content

Instantly share code, notes, and snippets.

@Gaurav0
Last active August 29, 2015 14:15
Show Gist options
  • Save Gaurav0/ddc55d8cebf4b2c2f0b6 to your computer and use it in GitHub Desktop.
Save Gaurav0/ddc55d8cebf4b2c2f0b6 to your computer and use it in GitHub Desktop.
requirebin sketch
// require() some stuff from npm (like you were using browserify)
// and then hit Rebuild to run it on the right
var when = require('when');
function print(str) {
var p = document.createElement('p');
document.body.appendChild(p);
p.innerHTML = str;
}
var promise1 = when.promise(function(resolve, reject) {
reject("Error 1");
});
var promise2 = when.promise(function(resolve, reject) {
reject("Error 2");
});
var promise3 = when.promise(function(resolve, reject) {
resolve();
});
promise3.then(function() {
return promise2.then(function() {
return promise1;
});
}).catch(function(error) {
print(error);
});
require=function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}({1:[function(require,module,exports){var process=module.exports={};process.nextTick=function(){var canSetImmediate=typeof window!=="undefined"&&window.setImmediate;var canMutationObserver=typeof window!=="undefined"&&window.MutationObserver;var canPost=typeof window!=="undefined"&&window.postMessage&&window.addEventListener;if(canSetImmediate){return function(f){return window.setImmediate(f)}}var queue=[];if(canMutationObserver){var hiddenDiv=document.createElement("div");var observer=new MutationObserver(function(){var queueList=queue.slice();queue.length=0;queueList.forEach(function(fn){fn()})});observer.observe(hiddenDiv,{attributes:true});return function nextTick(fn){if(!queue.length){hiddenDiv.setAttribute("yes","no")}queue.push(fn)}}if(canPost){window.addEventListener("message",function(ev){var source=ev.source;if((source===window||source===null)&&ev.data==="process-tick"){ev.stopPropagation();if(queue.length>0){var fn=queue.shift();fn()}}},true);return function nextTick(fn){queue.push(fn);window.postMessage("process-tick","*")}}return function nextTick(fn){setTimeout(fn,0)}}();process.title="browser";process.browser=true;process.env={};process.argv=[];function noop(){}process.on=noop;process.addListener=noop;process.once=noop;process.off=noop;process.removeListener=noop;process.removeAllListeners=noop;process.emit=noop;process.binding=function(name){throw new Error("process.binding is not supported")};process.cwd=function(){return"/"};process.chdir=function(dir){throw new Error("process.chdir is not supported")}},{}],2:[function(require,module,exports){(function(define){"use strict";define(function(require){var makePromise=require("./makePromise");var Scheduler=require("./Scheduler");var async=require("./env").asap;return makePromise({scheduler:new Scheduler(async)})})})(typeof define==="function"&&define.amd?define:function(factory){module.exports=factory(require)})},{"./Scheduler":3,"./env":15,"./makePromise":17}],3:[function(require,module,exports){(function(define){"use strict";define(function(){function Scheduler(async){this._async=async;this._running=false;this._queue=this;this._queueLen=0;this._afterQueue={};this._afterQueueLen=0;var self=this;this.drain=function(){self._drain()}}Scheduler.prototype.enqueue=function(task){this._queue[this._queueLen++]=task;this.run()};Scheduler.prototype.afterQueue=function(task){this._afterQueue[this._afterQueueLen++]=task;this.run()};Scheduler.prototype.run=function(){if(!this._running){this._running=true;this._async(this.drain)}};Scheduler.prototype._drain=function(){var i=0;for(;i<this._queueLen;++i){this._queue[i].run();this._queue[i]=void 0}this._queueLen=0;this._running=false;for(i=0;i<this._afterQueueLen;++i){this._afterQueue[i].run();this._afterQueue[i]=void 0}this._afterQueueLen=0};return Scheduler})})(typeof define==="function"&&define.amd?define:function(factory){module.exports=factory()})},{}],4:[function(require,module,exports){(function(define){"use strict";define(function(){function TimeoutError(message){Error.call(this);this.message=message;this.name=TimeoutError.name;if(typeof Error.captureStackTrace==="function"){Error.captureStackTrace(this,TimeoutError)}}TimeoutError.prototype=Object.create(Error.prototype);TimeoutError.prototype.constructor=TimeoutError;return TimeoutError})})(typeof define==="function"&&define.amd?define:function(factory){module.exports=factory()})},{}],5:[function(require,module,exports){(function(define){"use strict";define(function(){makeApply.tryCatchResolve=tryCatchResolve;return makeApply;function makeApply(Promise,call){if(arguments.length<2){call=tryCatchResolve}return apply;function apply(f,thisArg,args){var p=Promise._defer();var l=args.length;var params=new Array(l);callAndResolve({f:f,thisArg:thisArg,args:args,params:params,i:l-1,call:call},p._handler);return p}function callAndResolve(c,h){if(c.i<0){return call(c.f,c.thisArg,c.params,h)}var handler=Promise._handler(c.args[c.i]);handler.fold(callAndResolveNext,c,void 0,h)}function callAndResolveNext(c,x,h){c.params[c.i]=x;c.i-=1;callAndResolve(c,h)}}function tryCatchResolve(f,thisArg,args,resolver){try{resolver.resolve(f.apply(thisArg,args))}catch(e){resolver.reject(e)}}})})(typeof define==="function"&&define.amd?define:function(factory){module.exports=factory()})},{}],6:[function(require,module,exports){(function(define){"use strict";define(function(require){var state=require("../state");var applier=require("../apply");return function array(Promise){var applyFold=applier(Promise);var toPromise=Promise.resolve;var all=Promise.all;var ar=Array.prototype.reduce;var arr=Array.prototype.reduceRight;var slice=Array.prototype.slice;Promise.any=any;Promise.some=some;Promise.settle=settle;Promise.map=map;Promise.filter=filter;Promise.reduce=reduce;Promise.reduceRight=reduceRight;Promise.prototype.spread=function(onFulfilled){return this.then(all).then(function(array){return onFulfilled.apply(this,array)})};return Promise;function any(promises){var p=Promise._defer();var resolver=p._handler;var l=promises.length>>>0;var pending=l;var errors=[];for(var h,x,i=0;i<l;++i){x=promises[i];if(x===void 0&&!(i in promises)){--pending;continue}h=Promise._handler(x);if(h.state()>0){resolver.become(h);Promise._visitRemaining(promises,i,h);break}else{h.visit(resolver,handleFulfill,handleReject)}}if(pending===0){resolver.reject(new RangeError("any(): array must not be empty"))}return p;function handleFulfill(x){errors=null;this.resolve(x)}function handleReject(e){if(this.resolved){return}errors.push(e);if(--pending===0){this.reject(errors)}}}function some(promises,n){var p=Promise._defer();var resolver=p._handler;var results=[];var errors=[];var l=promises.length>>>0;var nFulfill=0;var nReject;var x,i;for(i=0;i<l;++i){x=promises[i];if(x===void 0&&!(i in promises)){continue}++nFulfill}n=Math.max(n,0);nReject=nFulfill-n+1;nFulfill=Math.min(n,nFulfill);if(n>nFulfill){resolver.reject(new RangeError("some(): array must contain at least "+n+" item(s), but had "+nFulfill))}else if(nFulfill===0){resolver.resolve(results)}for(i=0;i<l;++i){x=promises[i];if(x===void 0&&!(i in promises)){continue}Promise._handler(x).visit(resolver,fulfill,reject,resolver.notify)}return p;function fulfill(x){if(this.resolved){return}results.push(x);if(--nFulfill===0){errors=null;this.resolve(results)}}function reject(e){if(this.resolved){return}errors.push(e);if(--nReject===0){results=null;this.reject(errors)}}}function map(promises,f){return Promise._traverse(f,promises)}function filter(promises,predicate){var a=slice.call(promises);return Promise._traverse(predicate,a).then(function(keep){return filterSync(a,keep)})}function filterSync(promises,keep){var l=keep.length;var filtered=new Array(l);for(var i=0,j=0;i<l;++i){if(keep[i]){filtered[j++]=Promise._handler(promises[i]).value}}filtered.length=j;return filtered}function settle(promises){return all(promises.map(settleOne))}function settleOne(p){var h=Promise._handler(p);if(h.state()===0){return toPromise(p).then(state.fulfilled,state.rejected)}h._unreport();return state.inspect(h)}function reduce(promises,f){return arguments.length>2?ar.call(promises,liftCombine(f),arguments[2]):ar.call(promises,liftCombine(f))}function reduceRight(promises,f){return arguments.length>2?arr.call(promises,liftCombine(f),arguments[2]):arr.call(promises,liftCombine(f))}function liftCombine(f){return function(z,x,i){return applyFold(f,void 0,[z,x,i])}}}})})(typeof define==="function"&&define.amd?define:function(factory){module.exports=factory(require)})},{"../apply":5,"../state":18}],7:[function(require,module,exports){(function(define){"use strict";define(function(){return function flow(Promise){var resolve=Promise.resolve;var reject=Promise.reject;var origCatch=Promise.prototype["catch"];Promise.prototype.done=function(onResult,onError){this._handler.visit(this._handler.receiver,onResult,onError)};Promise.prototype["catch"]=Promise.prototype.otherwise=function(onRejected){if(arguments.length<2){return origCatch.call(this,onRejected)}if(typeof onRejected!=="function"){return this.ensure(rejectInvalidPredicate)}return origCatch.call(this,createCatchFilter(arguments[1],onRejected))};function createCatchFilter(handler,predicate){return function(e){return evaluatePredicate(e,predicate)?handler.call(this,e):reject(e)}}Promise.prototype["finally"]=Promise.prototype.ensure=function(handler){if(typeof handler!=="function"){return this}return this.then(function(x){return runSideEffect(handler,this,identity,x)},function(e){return runSideEffect(handler,this,reject,e)})};function runSideEffect(handler,thisArg,propagate,value){var result=handler.call(thisArg);return maybeThenable(result)?propagateValue(result,propagate,value):propagate(value)}function propagateValue(result,propagate,x){return resolve(result).then(function(){return propagate(x)})}Promise.prototype["else"]=Promise.prototype.orElse=function(defaultValue){return this.then(void 0,function(){return defaultValue})};Promise.prototype["yield"]=function(value){return this.then(function(){return value})};Promise.prototype.tap=function(onFulfilledSideEffect){return this.then(onFulfilledSideEffect)["yield"](this)};return Promise};function rejectInvalidPredicate(){throw new TypeError("catch predicate must be a function")}function evaluatePredicate(e,predicate){return isError(predicate)?e instanceof predicate:predicate(e)}function isError(predicate){return predicate===Error||predicate!=null&&predicate.prototype instanceof Error}function maybeThenable(x){return(typeof x==="object"||typeof x==="function")&&x!==null}function identity(x){return x}})})(typeof define==="function"&&define.amd?define:function(factory){module.exports=factory()})},{}],8:[function(require,module,exports){(function(define){"use strict";define(function(){return function fold(Promise){Promise.prototype.fold=function(f,z){var promise=this._beget();this._handler.fold(function(z,x,to){Promise._handler(z).fold(function(x,z,to){to.resolve(f.call(this,z,x))},x,this,to)},z,promise._handler.receiver,promise._handler);return promise};return Promise}})})(typeof define==="function"&&define.amd?define:function(factory){module.exports=factory()})},{}],9:[function(require,module,exports){(function(define){"use strict";define(function(require){var inspect=require("../state").inspect;return function inspection(Promise){Promise.prototype.inspect=function(){return inspect(Promise._handler(this))};return Promise}})})(typeof define==="function"&&define.amd?define:function(factory){module.exports=factory(require)})},{"../state":18}],10:[function(require,module,exports){(function(define){"use strict";define(function(){return function generate(Promise){var resolve=Promise.resolve;Promise.iterate=iterate;Promise.unfold=unfold;return Promise;function iterate(f,condition,handler,x){return unfold(function(x){return[x,f(x)]},condition,handler,x)}function unfold(unspool,condition,handler,x){return resolve(x).then(function(seed){return resolve(condition(seed)).then(function(done){return done?seed:resolve(unspool(seed)).spread(next)})});function next(item,newSeed){return resolve(handler(item)).then(function(){return unfold(unspool,condition,handler,newSeed)})}}}})})(typeof define==="function"&&define.amd?define:function(factory){module.exports=factory()})},{}],11:[function(require,module,exports){(function(define){"use strict";define(function(){return function progress(Promise){Promise.prototype.progress=function(onProgress){return this.then(void 0,void 0,onProgress)};return Promise}})})(typeof define==="function"&&define.amd?define:function(factory){module.exports=factory()})},{}],12:[function(require,module,exports){(function(define){"use strict";define(function(require){var env=require("../env");var TimeoutError=require("../TimeoutError");function setTimeout(f,ms,x,y){return env.setTimer(function(){f(x,y,ms)},ms)}return function timed(Promise){Promise.prototype.delay=function(ms){var p=this._beget();this._handler.fold(handleDelay,ms,void 0,p._handler);return p};function handleDelay(ms,x,h){setTimeout(resolveDelay,ms,x,h)}function resolveDelay(x,h){h.resolve(x)}Promise.prototype.timeout=function(ms,reason){var p=this._beget();var h=p._handler;var t=setTimeout(onTimeout,ms,reason,p._handler);this._handler.visit(h,function onFulfill(x){env.clearTimer(t);this.resolve(x)},function onReject(x){env.clearTimer(t);this.reject(x)},h.notify);return p};function onTimeout(reason,h,ms){var e=typeof reason==="undefined"?new TimeoutError("timed out after "+ms+"ms"):reason;h.reject(e)}return Promise}})})(typeof define==="function"&&define.amd?define:function(factory){module.exports=factory(require)})},{"../TimeoutError":4,"../env":15}],13:[function(require,module,exports){(function(define){"use strict";define(function(require){var setTimer=require("../env").setTimer;var format=require("../format");return function unhandledRejection(Promise){var logError=noop;var logInfo=noop;var localConsole;if(typeof console!=="undefined"){localConsole=console;logError=typeof localConsole.error!=="undefined"?function(e){localConsole.error(e)}:function(e){localConsole.log(e)};logInfo=typeof localConsole.info!=="undefined"?function(e){localConsole.info(e)}:function(e){localConsole.log(e)}}Promise.onPotentiallyUnhandledRejection=function(rejection){enqueue(report,rejection)};Promise.onPotentiallyUnhandledRejectionHandled=function(rejection){enqueue(unreport,rejection)};Promise.onFatalRejection=function(rejection){enqueue(throwit,rejection.value)};var tasks=[];var reported=[];var running=null;function report(r){if(!r.handled){reported.push(r);logError("Potentially unhandled rejection ["+r.id+"] "+format.formatError(r.value))}}function unreport(r){var i=reported.indexOf(r);if(i>=0){reported.splice(i,1);logInfo("Handled previous rejection ["+r.id+"] "+format.formatObject(r.value))}}function enqueue(f,x){tasks.push(f,x);if(running===null){running=setTimer(flush,0)}}function flush(){running=null;while(tasks.length>0){tasks.shift()(tasks.shift())}}return Promise};function throwit(e){throw e}function noop(){}})})(typeof define==="function"&&define.amd?define:function(factory){module.exports=factory(require)})},{"../env":15,"../format":16}],14:[function(require,module,exports){(function(define){"use strict";define(function(){return function addWith(Promise){Promise.prototype["with"]=Promise.prototype.withThis=function(receiver){var p=this._beget();var child=p._handler;child.receiver=receiver;this._handler.chain(child,receiver);return p};return Promise}})})(typeof define==="function"&&define.amd?define:function(factory){module.exports=factory()})},{}],15:[function(require,module,exports){(function(process){(function(define){"use strict";define(function(require){var MutationObs;var capturedSetTimeout=typeof setTimeout!=="undefined"&&setTimeout;var setTimer=function(f,ms){return setTimeout(f,ms)};var clearTimer=function(t){return clearTimeout(t)};var asap=function(f){return capturedSetTimeout(f,0)};if(isNode()){asap=function(f){return process.nextTick(f)}}else if(MutationObs=hasMutationObserver()){asap=initMutationObserver(MutationObs)}else if(!capturedSetTimeout){var vertxRequire=require;var vertx=vertxRequire("vertx");setTimer=function(f,ms){return vertx.setTimer(ms,f)};clearTimer=vertx.cancelTimer;asap=vertx.runOnLoop||vertx.runOnContext}return{setTimer:setTimer,clearTimer:clearTimer,asap:asap};function isNode(){return typeof process!=="undefined"&&process!==null&&typeof process.nextTick==="function"}function hasMutationObserver(){return typeof MutationObserver==="function"&&MutationObserver||typeof WebKitMutationObserver==="function"&&WebKitMutationObserver}function initMutationObserver(MutationObserver){var scheduled;var node=document.createTextNode("");var o=new MutationObserver(run);o.observe(node,{characterData:true});function run(){var f=scheduled;scheduled=void 0;f()}var i=0;return function(f){scheduled=f;node.data=i^=1}}})})(typeof define==="function"&&define.amd?define:function(factory){module.exports=factory(require)})}).call(this,require("_process"))},{_process:1}],16:[function(require,module,exports){(function(define){"use strict";define(function(){return{formatError:formatError,formatObject:formatObject,tryStringify:tryStringify};function formatError(e){var s=typeof e==="object"&&e!==null&&e.stack?e.stack:formatObject(e);return e instanceof Error?s:s+" (WARNING: non-Error used)"}function formatObject(o){var s=String(o);if(s==="[object Object]"&&typeof JSON!=="undefined"){s=tryStringify(o,s)}return s}function tryStringify(x,defaultValue){try{return JSON.stringify(x)}catch(e){return defaultValue}}})})(typeof define==="function"&&define.amd?define:function(factory){module.exports=factory()})},{}],17:[function(require,module,exports){(function(process){(function(define){"use strict";define(function(){return function makePromise(environment){var tasks=environment.scheduler;var emitRejection=initEmitRejection();var objectCreate=Object.create||function(proto){function Child(){}Child.prototype=proto;return new Child};function Promise(resolver,handler){this._handler=resolver===Handler?handler:init(resolver)}function init(resolver){var handler=new Pending;try{resolver(promiseResolve,promiseReject,promiseNotify)}catch(e){promiseReject(e)}return handler;function promiseResolve(x){handler.resolve(x)}function promiseReject(reason){handler.reject(reason)}function promiseNotify(x){handler.notify(x)}}Promise.resolve=resolve;Promise.reject=reject;Promise.never=never;Promise._defer=defer;Promise._handler=getHandler;function resolve(x){return isPromise(x)?x:new Promise(Handler,new Async(getHandler(x)))}function reject(x){return new Promise(Handler,new Async(new Rejected(x)))}function never(){return foreverPendingPromise}function defer(){return new Promise(Handler,new Pending)}Promise.prototype.then=function(onFulfilled,onRejected,onProgress){var parent=this._handler;var state=parent.join().state();if(typeof onFulfilled!=="function"&&state>0||typeof onRejected!=="function"&&state<0){return new this.constructor(Handler,parent)}var p=this._beget();var child=p._handler;parent.chain(child,parent.receiver,onFulfilled,onRejected,onProgress);return p};Promise.prototype["catch"]=function(onRejected){return this.then(void 0,onRejected)};Promise.prototype._beget=function(){return begetFrom(this._handler,this.constructor)};function begetFrom(parent,Promise){var child=new Pending(parent.receiver,parent.join().context);return new Promise(Handler,child)}Promise.all=all;Promise.race=race;Promise._traverse=traverse;function all(promises){return traverseWith(snd,null,promises)}function traverse(f,promises){return traverseWith(tryCatch2,f,promises)}function traverseWith(tryMap,f,promises){var handler=typeof f==="function"?mapAt:settleAt;var resolver=new Pending;var pending=promises.length>>>0;var results=new Array(pending);for(var i=0,x;i<promises.length&&!resolver.resolved;++i){x=promises[i];if(x===void 0&&!(i in promises)){--pending;continue}traverseAt(promises,handler,i,x,resolver)}if(pending===0){resolver.become(new Fulfilled(results))}return new Promise(Handler,resolver);function mapAt(i,x,resolver){if(!resolver.resolved){traverseAt(promises,settleAt,i,tryMap(f,x,i),resolver)}}function settleAt(i,x,resolver){results[i]=x;if(--pending===0){resolver.become(new Fulfilled(results))}}}function traverseAt(promises,handler,i,x,resolver){if(maybeThenable(x)){var h=getHandlerMaybeThenable(x);var s=h.state();if(s===0){h.fold(handler,i,void 0,resolver)}else if(s>0){handler(i,h.value,resolver)}else{resolver.become(h);visitRemaining(promises,i+1,h)}}else{handler(i,x,resolver)}}Promise._visitRemaining=visitRemaining;function visitRemaining(promises,start,handler){for(var i=start;i<promises.length;++i){markAsHandled(getHandler(promises[i]),handler)}}function markAsHandled(h,handler){if(h===handler){return}var s=h.state();if(s===0){h.visit(h,void 0,h._unreport)}else if(s<0){h._unreport()}}function race(promises){if(typeof promises!=="object"||promises===null){return reject(new TypeError("non-iterable passed to race()"))}return promises.length===0?never():promises.length===1?resolve(promises[0]):runRace(promises)}function runRace(promises){var resolver=new Pending;var i,x,h;for(i=0;i<promises.length;++i){x=promises[i];if(x===void 0&&!(i in promises)){continue}h=getHandler(x);if(h.state()!==0){resolver.become(h);visitRemaining(promises,i+1,h);break}else{h.visit(resolver,resolver.resolve,resolver.reject)}}return new Promise(Handler,resolver)}function getHandler(x){if(isPromise(x)){return x._handler.join()}return maybeThenable(x)?getHandlerUntrusted(x):new Fulfilled(x)}function getHandlerMaybeThenable(x){return isPromise(x)?x._handler.join():getHandlerUntrusted(x)}function getHandlerUntrusted(x){try{var untrustedThen=x.then;return typeof untrustedThen==="function"?new Thenable(untrustedThen,x):new Fulfilled(x)}catch(e){return new Rejected(e)}}function Handler(){}Handler.prototype.when=Handler.prototype.become=Handler.prototype.notify=Handler.prototype.fail=Handler.prototype._unreport=Handler.prototype._report=noop;Handler.prototype._state=0;Handler.prototype.state=function(){return this._state};Handler.prototype.join=function(){var h=this;while(h.handler!==void 0){h=h.handler}return h};Handler.prototype.chain=function(to,receiver,fulfilled,rejected,progress){this.when({resolver:to,receiver:receiver,fulfilled:fulfilled,rejected:rejected,progress:progress})};Handler.prototype.visit=function(receiver,fulfilled,rejected,progress){this.chain(failIfRejected,receiver,fulfilled,rejected,progress)};Handler.prototype.fold=function(f,z,c,to){this.when(new Fold(f,z,c,to))};function FailIfRejected(){}inherit(Handler,FailIfRejected);FailIfRejected.prototype.become=function(h){h.fail()};var failIfRejected=new FailIfRejected;function Pending(receiver,inheritedContext){Promise.createContext(this,inheritedContext);this.consumers=void 0;this.receiver=receiver;this.handler=void 0;this.resolved=false}inherit(Handler,Pending);Pending.prototype._state=0;Pending.prototype.resolve=function(x){this.become(getHandler(x))};Pending.prototype.reject=function(x){if(this.resolved){return}this.become(new Rejected(x))};Pending.prototype.join=function(){if(!this.resolved){return this}var h=this;while(h.handler!==void 0){h=h.handler;if(h===this){return this.handler=cycle()}}return h};Pending.prototype.run=function(){var q=this.consumers;var handler=this.handler;this.handler=this.handler.join();this.consumers=void 0;for(var i=0;i<q.length;++i){handler.when(q[i])}};Pending.prototype.become=function(handler){if(this.resolved){return}this.resolved=true;this.handler=handler;if(this.consumers!==void 0){tasks.enqueue(this)}if(this.context!==void 0){handler._report(this.context)}};Pending.prototype.when=function(continuation){if(this.resolved){tasks.enqueue(new ContinuationTask(continuation,this.handler))}else{if(this.consumers===void 0){this.consumers=[continuation]}else{this.consumers.push(continuation)}}};Pending.prototype.notify=function(x){if(!this.resolved){tasks.enqueue(new ProgressTask(x,this))}};Pending.prototype.fail=function(context){var c=typeof context==="undefined"?this.context:context;this.resolved&&this.handler.join().fail(c)};Pending.prototype._report=function(context){this.resolved&&this.handler.join()._report(context)};Pending.prototype._unreport=function(){this.resolved&&this.handler.join()._unreport()};function Async(handler){this.handler=handler}inherit(Handler,Async);Async.prototype.when=function(continuation){tasks.enqueue(new ContinuationTask(continuation,this))};Async.prototype._report=function(context){this.join()._report(context)};Async.prototype._unreport=function(){this.join()._unreport()};function Thenable(then,thenable){Pending.call(this);tasks.enqueue(new AssimilateTask(then,thenable,this))}inherit(Pending,Thenable);function Fulfilled(x){Promise.createContext(this);this.value=x}inherit(Handler,Fulfilled);Fulfilled.prototype._state=1;Fulfilled.prototype.fold=function(f,z,c,to){runContinuation3(f,z,this,c,to)};Fulfilled.prototype.when=function(cont){runContinuation1(cont.fulfilled,this,cont.receiver,cont.resolver)};var errorId=0;function Rejected(x){Promise.createContext(this);this.id=++errorId;this.value=x;this.handled=false;this.reported=false;this._report()}inherit(Handler,Rejected);Rejected.prototype._state=-1;Rejected.prototype.fold=function(f,z,c,to){to.become(this)};Rejected.prototype.when=function(cont){if(typeof cont.rejected==="function"){this._unreport()}runContinuation1(cont.rejected,this,cont.receiver,cont.resolver)};Rejected.prototype._report=function(context){tasks.afterQueue(new ReportTask(this,context))};Rejected.prototype._unreport=function(){if(this.handled){return}this.handled=true;tasks.afterQueue(new UnreportTask(this))};Rejected.prototype.fail=function(context){this.reported=true;emitRejection("unhandledRejection",this);Promise.onFatalRejection(this,context===void 0?this.context:context)};function ReportTask(rejection,context){this.rejection=rejection;this.context=context}ReportTask.prototype.run=function(){if(!this.rejection.handled&&!this.rejection.reported){this.rejection.reported=true;emitRejection("unhandledRejection",this.rejection)||Promise.onPotentiallyUnhandledRejection(this.rejection,this.context)}};function UnreportTask(rejection){this.rejection=rejection}UnreportTask.prototype.run=function(){if(this.rejection.reported){emitRejection("rejectionHandled",this.rejection)||Promise.onPotentiallyUnhandledRejectionHandled(this.rejection)}};Promise.createContext=Promise.enterContext=Promise.exitContext=Promise.onPotentiallyUnhandledRejection=Promise.onPotentiallyUnhandledRejectionHandled=Promise.onFatalRejection=noop;var foreverPendingHandler=new Handler;var foreverPendingPromise=new Promise(Handler,foreverPendingHandler);function cycle(){return new Rejected(new TypeError("Promise cycle"))}function ContinuationTask(continuation,handler){this.continuation=continuation;this.handler=handler}ContinuationTask.prototype.run=function(){this.handler.join().when(this.continuation)};function ProgressTask(value,handler){this.handler=handler;this.value=value}ProgressTask.prototype.run=function(){var q=this.handler.consumers;if(q===void 0){return}for(var c,i=0;i<q.length;++i){c=q[i];runNotify(c.progress,this.value,this.handler,c.receiver,c.resolver)}};function AssimilateTask(then,thenable,resolver){this._then=then;this.thenable=thenable;this.resolver=resolver}AssimilateTask.prototype.run=function(){var h=this.resolver;tryAssimilate(this._then,this.thenable,_resolve,_reject,_notify);function _resolve(x){h.resolve(x)}function _reject(x){h.reject(x)}function _notify(x){h.notify(x)}};function tryAssimilate(then,thenable,resolve,reject,notify){try{then.call(thenable,resolve,reject,notify)}catch(e){reject(e)}}function Fold(f,z,c,to){this.f=f;this.z=z;this.c=c;this.to=to;this.resolver=failIfRejected;this.receiver=this}Fold.prototype.fulfilled=function(x){this.f.call(this.c,this.z,x,this.to)};Fold.prototype.rejected=function(x){this.to.reject(x)};Fold.prototype.progress=function(x){this.to.notify(x)};function isPromise(x){return x instanceof Promise}function maybeThenable(x){return(typeof x==="object"||typeof x==="function")&&x!==null}function runContinuation1(f,h,receiver,next){if(typeof f!=="function"){return next.become(h)}Promise.enterContext(h);tryCatchReject(f,h.value,receiver,next);Promise.exitContext()}function runContinuation3(f,x,h,receiver,next){if(typeof f!=="function"){return next.become(h)}Promise.enterContext(h);tryCatchReject3(f,x,h.value,receiver,next);Promise.exitContext()}function runNotify(f,x,h,receiver,next){if(typeof f!=="function"){return next.notify(x)}Promise.enterContext(h);tryCatchReturn(f,x,receiver,next);Promise.exitContext()}function tryCatch2(f,a,b){try{return f(a,b)}catch(e){return reject(e)}}function tryCatchReject(f,x,thisArg,next){try{next.become(getHandler(f.call(thisArg,x)))}catch(e){next.become(new Rejected(e))}}function tryCatchReject3(f,x,y,thisArg,next){try{f.call(thisArg,x,y,next)}catch(e){next.become(new Rejected(e))}}function tryCatchReturn(f,x,thisArg,next){try{next.notify(f.call(thisArg,x))}catch(e){next.notify(e)}}function inherit(Parent,Child){Child.prototype=objectCreate(Parent.prototype);Child.prototype.constructor=Child}function snd(x,y){return y}function noop(){}function initEmitRejection(){if(typeof process!=="undefined"&&process!==null&&typeof process.emit==="function"){return function(type,rejection){return type==="unhandledRejection"?process.emit(type,rejection.value,rejection):process.emit(type,rejection)}}else if(typeof self!=="undefined"&&typeof CustomEvent==="function"){return function(noop,self,CustomEvent){var hasCustomEvent=false;try{var ev=new CustomEvent("unhandledRejection");hasCustomEvent=ev instanceof CustomEvent}catch(e){}return!hasCustomEvent?noop:function(type,rejection){var ev=new CustomEvent(type,{detail:{reason:rejection.value,key:rejection},bubbles:false,cancelable:true});return!self.dispatchEvent(ev)}}(noop,self,CustomEvent)}return noop}return Promise}})})(typeof define==="function"&&define.amd?define:function(factory){module.exports=factory()})}).call(this,require("_process"))},{_process:1}],18:[function(require,module,exports){(function(define){"use strict";define(function(){return{pending:toPendingState,fulfilled:toFulfilledState,rejected:toRejectedState,inspect:inspect};function toPendingState(){return{state:"pending"}}function toRejectedState(e){return{state:"rejected",reason:e}}function toFulfilledState(x){return{state:"fulfilled",value:x}}function inspect(handler){var state=handler.state();return state===0?toPendingState():state>0?toFulfilledState(handler.value):toRejectedState(handler.value)}})})(typeof define==="function"&&define.amd?define:function(factory){module.exports=factory()})},{}],when:[function(require,module,exports){(function(define){"use strict";define(function(require){var timed=require("./lib/decorators/timed");var array=require("./lib/decorators/array");var flow=require("./lib/decorators/flow");var fold=require("./lib/decorators/fold");var inspect=require("./lib/decorators/inspect");var generate=require("./lib/decorators/iterate");var progress=require("./lib/decorators/progress");var withThis=require("./lib/decorators/with");var unhandledRejection=require("./lib/decorators/unhandledRejection");var TimeoutError=require("./lib/TimeoutError");var Promise=[array,flow,fold,generate,progress,inspect,withThis,timed,unhandledRejection].reduce(function(Promise,feature){return feature(Promise)},require("./lib/Promise"));var apply=require("./lib/apply")(Promise);when.promise=promise;when.resolve=Promise.resolve;when.reject=Promise.reject;when.lift=lift;when["try"]=attempt;when.attempt=attempt;when.iterate=Promise.iterate;when.unfold=Promise.unfold;when.join=join;when.all=all;when.settle=settle;when.any=lift(Promise.any);when.some=lift(Promise.some);when.race=lift(Promise.race);when.map=map;when.filter=filter;when.reduce=lift(Promise.reduce);when.reduceRight=lift(Promise.reduceRight);when.isPromiseLike=isPromiseLike;when.Promise=Promise;when.defer=defer;when.TimeoutError=TimeoutError;function when(x,onFulfilled,onRejected,onProgress){var p=Promise.resolve(x);if(arguments.length<2){return p}return p.then(onFulfilled,onRejected,onProgress)}function promise(resolver){return new Promise(resolver)}function lift(f){return function(){for(var i=0,l=arguments.length,a=new Array(l);i<l;++i){a[i]=arguments[i]}return apply(f,this,a)}}function attempt(f){for(var i=0,l=arguments.length-1,a=new Array(l);i<l;++i){a[i]=arguments[i+1]}return apply(f,this,a)
}function defer(){return new Deferred}function Deferred(){var p=Promise._defer();function resolve(x){p._handler.resolve(x)}function reject(x){p._handler.reject(x)}function notify(x){p._handler.notify(x)}this.promise=p;this.resolve=resolve;this.reject=reject;this.notify=notify;this.resolver={resolve:resolve,reject:reject,notify:notify}}function isPromiseLike(x){return x&&typeof x.then==="function"}function join(){return Promise.all(arguments)}function all(promises){return when(promises,Promise.all)}function settle(promises){return when(promises,Promise.settle)}function map(promises,mapFunc){return when(promises,function(promises){return Promise.map(promises,mapFunc)})}function filter(promises,predicate){return when(promises,function(promises){return Promise.filter(promises,predicate)})}return when})})(typeof define==="function"&&define.amd?define:function(factory){module.exports=factory(require)})},{"./lib/Promise":2,"./lib/TimeoutError":4,"./lib/apply":5,"./lib/decorators/array":6,"./lib/decorators/flow":7,"./lib/decorators/fold":8,"./lib/decorators/inspect":9,"./lib/decorators/iterate":10,"./lib/decorators/progress":11,"./lib/decorators/timed":12,"./lib/decorators/unhandledRejection":13,"./lib/decorators/with":14}]},{},[]);var when=require("when");function print(str){var p=document.createElement("p");document.body.appendChild(p);p.innerHTML=str}var promise1=when.promise(function(resolve,reject){reject("Error 1")});var promise2=when.promise(function(resolve,reject){reject("Error 2")});var promise3=when.promise(function(resolve,reject){resolve()});promise3.then(function(){return promise2.then(function(){return promise1})}).catch(function(error){print(error)});
{
"name": "requirebin-sketch",
"version": "1.0.0",
"dependencies": {
"when": "3.7.2"
}
}
<style type='text/css'>html, body { margin: 0; padding: 0; border: 0; }
body, html { height: 100%; width: 100%; }</style>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment