“use strict”; module.exports = function(Promise) { var longStackTraces = false; var contextStack = [];

Promise.prototype._promiseCreated = function() {}; Promise.prototype._pushContext = function() {}; Promise.prototype._popContext = function() {return null;}; Promise._peekContext = Promise.prototype._peekContext = function() {};

function Context() {

this._trace = new Context.CapturedTrace(peekContext());

} Context.prototype._pushContext = function () {

if (this._trace !== undefined) {
    this._trace._promiseCreated = null;
    contextStack.push(this._trace);
}

};

Context.prototype._popContext = function () {

if (this._trace !== undefined) {
    var trace = contextStack.pop();
    var ret = trace._promiseCreated;
    trace._promiseCreated = null;
    return ret;
}
return null;

};

function createContext() {

if (longStackTraces) return new Context();

}

function peekContext() {

var lastIndex = contextStack.length - 1;
if (lastIndex >= 0) {
    return contextStack[lastIndex];
}
return undefined;

} Context.CapturedTrace = null; Context.create = createContext; Context.deactivateLongStackTraces = function() {}; Context.activateLongStackTraces = function() {

var Promise_pushContext = Promise.prototype._pushContext;
var Promise_popContext = Promise.prototype._popContext;
var Promise_PeekContext = Promise._peekContext;
var Promise_peekContext = Promise.prototype._peekContext;
var Promise_promiseCreated = Promise.prototype._promiseCreated;
Context.deactivateLongStackTraces = function() {
    Promise.prototype._pushContext = Promise_pushContext;
    Promise.prototype._popContext = Promise_popContext;
    Promise._peekContext = Promise_PeekContext;
    Promise.prototype._peekContext = Promise_peekContext;
    Promise.prototype._promiseCreated = Promise_promiseCreated;
    longStackTraces = false;
};
longStackTraces = true;
Promise.prototype._pushContext = Context.prototype._pushContext;
Promise.prototype._popContext = Context.prototype._popContext;
Promise._peekContext = Promise.prototype._peekContext = peekContext;
Promise.prototype._promiseCreated = function() {
    var ctx = this._peekContext();
    if (ctx && ctx._promiseCreated == null) ctx._promiseCreated = this;
};

}; return Context; };