Skip to content
This repository has been archived by the owner on Dec 20, 2024. It is now read-only.

Commit

Permalink
Make error properties configurable and writable
Browse files Browse the repository at this point in the history
  • Loading branch information
vweevers committed Sep 18, 2021
1 parent cb62efa commit 6db33c7
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 10 deletions.
8 changes: 4 additions & 4 deletions errors.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,10 @@ function createError (type, Proto) {
message = message.message || message.name
}

Object.defineProperty(this, 'type', { value: type, enumerable: false, writable: false, configurable: false })
Object.defineProperty(this, 'name', { value: type, enumerable: false, writable: false, configurable: false })
Object.defineProperty(this, 'cause', { value: cause, enumerable: false, writable: false, configurable: false })
Object.defineProperty(this, 'message', { value: message || '', enumerable: false, writable: false, configurable: false })
Object.defineProperty(this, 'type', { value: type, enumerable: false, writable: true, configurable: true })
Object.defineProperty(this, 'name', { value: type, enumerable: false, writable: true, configurable: true })
Object.defineProperty(this, 'cause', { value: cause, enumerable: false, writable: true, configurable: true })
Object.defineProperty(this, 'message', { value: message || '', enumerable: false, writable: true, configurable: true })

Error.call(this)

Expand Down
7 changes: 1 addition & 6 deletions test.js
Original file line number Diff line number Diff line change
Expand Up @@ -63,12 +63,7 @@ test('NotFoundError has special properties', function (t) {
t.end()
})

test.skip('error message is writable', function (t) {
// TODO: bug in prr? Given shorthand 'ewr', the effective options are:
// { enumerable: false, configurable: false, writable: false }
// Let's keep enumerable as-is, but set configurable and writable for flexibility.
// That's also the same as the `message` property of a new Error('foo').

test('error message is writable for flexibility', function (t) {
const error = new errors.WriteError('foo')
error.message = 'Got error: ' + error.message
t.is(error.message, 'Got error: foo')
Expand Down

0 comments on commit 6db33c7

Please sign in to comment.