dodgy
Version:
Optionally abortable, resolvable, and rejectable promises
2 lines (1 loc) • 726 B
JavaScript
var dodgy=function(n){"use strict";function t(n,t){var r,e,o,u="pending",c=new Promise((function(t,a){n(r=function(n){"pending"===u&&(u="resolved",c.status=u,t(n))},e=function(n){"pending"===u&&(u="rejected",c.status=u,a(n))},(function(n){o=function(t){"pending"===u&&(u="aborted",c.status=u,a(n(t)))}}))}));return function n(t,r,e,o,u){var c=t.then,a=t.catch;e&&(t.abort=e);r&&(t.resolve=o,t.reject=u);return t.then=function(){return n(c.apply(t,arguments),r,e,o,u)},t.catch=function(){return n(a.apply(t,arguments),r,e,o,u)},t}(c,t,o,r,e)}return t.race=function(n){var t=Promise.race(n).then(r);function r(t){for(var r=0;r<n.length;r++)"abort"in n[r]&&n[r].abort();return t}return t.abort=r,t},n.Dodgy=t,n.default=t,n}({});