Представьте себе следующий фрагмент кода:
class FakeError extends Error {
constructor(message, opts = {}) {
super(message);
const { description = null } = opts;
this.description = description;
Error.captureStackTrace(this, this.constructor);
}
}
(() => {
try {
throw new FakeError('Test', { description: 'This is a test' });
}
catch (error) {
console.log({ ...error, test: 'test' });
}
})();
В Chrome это дает желаемый ответ, который должен обрабатывать ошибку, как если бы это был обычный объект:
[object Object] {
description: "This is a test",
test: "test"
}
Однако в Firefox он просто игнорирует свойства, добавленные в расширение прототипа:
[object Object] {
test: "test"
}
Существует ли известная причина для этого? Есть ли что-то, что я могу сделать, чтобы это работало в разных браузерах?