diff --git a/lib/serializer.js b/lib/serializer.js index 9ceee13..449bda2 100644 --- a/lib/serializer.js +++ b/lib/serializer.js @@ -189,7 +189,9 @@ ErrorSerializer.prototype._findKnownFields = function _findKnownFields() { var verr = new verror.VError(); var multiErr = new verror.MultiError([ verr ]); fields.push(_.keys(verr)); + fields.push(_.keys(Object.getPrototypeOf(verr))); fields.push(_.keys(multiErr)); + fields.push(_.keys(Object.getPrototypeOf(multiErr))); return _(fields).flatten().uniq().value(); }; diff --git a/test/index.js b/test/index.js index 630391a..b34fcfe 100644 --- a/test/index.js +++ b/test/index.js @@ -965,5 +965,23 @@ describe('restify-errors node module.', function() { var serializedErr = serializer.err(err1, 'oh noes!'); assert.notInclude(serializedErr.stack, 'espresso=normale'); }); + + it('should not serialize known fields on VError', function() { + var serializer = restifyErrors.bunyanSerializer.create({ + topLevelFields: true + }); + var err1 = new verror.VError({ + name: 'VErrorInfo', + info: { + espresso: 'ristretto' + } + }, 'pull!'); + err1.espresso = 'lungo'; + + logger.child({ serializers: serializer }).error(err1); + + var serializedErr = serializer.err(err1, 'oh noes!'); + assert.notInclude(serializedErr.stack, 'cause=undefined'); + }); }); });