error-polyfill
Version:
Javascript Error Polyfill
50 lines (46 loc) • 1.51 kB
JavaScript
var cache = require("u3").cache,
prepareStackTrace = require("./prepareStackTrace");
module.exports = function () {
Error.captureStackTrace = function (throwable, terminator) {
Object.defineProperties(throwable, {
stack: {
configurable: true,
get: cache(function () {
return (Error.prepareStackTrace || prepareStackTrace)(throwable, []);
})
},
cachedStack: {
configurable: true,
writable: true,
enumerable: false,
value: true
}
});
};
Error.getStackTrace = function (throwable) {
if (throwable.cachedStack)
return throwable.stack;
var stack = (Error.prepareStackTrace || prepareStackTrace)(throwable, []);
try {
Object.defineProperties(throwable, {
stack: {
configurable: true,
writable: true,
enumerable: false,
value: stack
},
cachedStack: {
configurable: true,
writable: true,
enumerable: false,
value: true
}
});
} catch (nonConfigurableError) {
}
return stack;
};
return {
prepareStackTrace: prepareStackTrace
};
};