| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 | "use strict";module.exports = function(Promise, INTERNAL, tryConvertToPromise, debug) {var calledBind = false;var rejectThis = function(_, e) {    this._reject(e);};var targetRejected = function(e, context) {    context.promiseRejectionQueued = true;    context.bindingPromise._then(rejectThis, rejectThis, null, this, e);};var bindingResolved = function(thisArg, context) {    if (((this._bitField & 50397184) === 0)) {        this._resolveCallback(context.target);    }};var bindingRejected = function(e, context) {    if (!context.promiseRejectionQueued) this._reject(e);};Promise.prototype.bind = function (thisArg) {    if (!calledBind) {        calledBind = true;        Promise.prototype._propagateFrom = debug.propagateFromFunction();        Promise.prototype._boundValue = debug.boundValueFunction();    }    var maybePromise = tryConvertToPromise(thisArg);    var ret = new Promise(INTERNAL);    ret._propagateFrom(this, 1);    var target = this._target();    ret._setBoundTo(maybePromise);    if (maybePromise instanceof Promise) {        var context = {            promiseRejectionQueued: false,            promise: ret,            target: target,            bindingPromise: maybePromise        };        target._then(INTERNAL, targetRejected, undefined, ret, context);        maybePromise._then(            bindingResolved, bindingRejected, undefined, ret, context);        ret._setOnCancel(maybePromise);    } else {        ret._resolveCallback(target);    }    return ret;};Promise.prototype._setBoundTo = function (obj) {    if (obj !== undefined) {        this._bitField = this._bitField | 2097152;        this._boundTo = obj;    } else {        this._bitField = this._bitField & (~2097152);    }};Promise.prototype._isBound = function () {    return (this._bitField & 2097152) === 2097152;};Promise.bind = function (thisArg, value) {    return Promise.resolve(value).bind(thisArg);};};
 |