@@ -235,9 +235,23 @@ function innerDeepEqual(val1, val2, strict, memos) {
235235 } else if ( isNativeError ( val1 ) || val1 instanceof Error ) {
236236 // Do not compare the stack as it might differ even though the error itself
237237 // is otherwise identical.
238- if ( ( ! isNativeError ( val2 ) && ! ( val2 instanceof Error ) ) ||
239- val1 . message !== val2 . message ||
240- val1 . name !== val2 . name ) {
238+ if ( ! isNativeError ( val2 ) && ! ( val2 instanceof Error ) ) {
239+ return false ;
240+ }
241+
242+ const message1Enumerable = ObjectPrototypePropertyIsEnumerable ( val1 , 'message' ) ;
243+ const name1Enumerable = ObjectPrototypePropertyIsEnumerable ( val1 , 'name' ) ;
244+ const cause1Enumerable = ObjectPrototypePropertyIsEnumerable ( val1 , 'cause' ) ;
245+ const errors1Enumerable = ObjectPrototypePropertyIsEnumerable ( val1 , 'errors' ) ;
246+
247+ if ( ( message1Enumerable !== ObjectPrototypePropertyIsEnumerable ( val2 , 'message' ) ||
248+ ( ! message1Enumerable && val1 . message !== val2 . message ) ) ||
249+ ( name1Enumerable !== ObjectPrototypePropertyIsEnumerable ( val2 , 'name' ) ||
250+ ( ! name1Enumerable && val1 . name !== val2 . name ) ) ||
251+ ( cause1Enumerable !== ObjectPrototypePropertyIsEnumerable ( val2 , 'cause' ) ||
252+ ( ! cause1Enumerable && ! innerDeepEqual ( val1 . cause , val2 . cause , strict , memos ) ) ) ||
253+ ( errors1Enumerable !== ObjectPrototypePropertyIsEnumerable ( val2 , 'errors' ) ||
254+ ( ! errors1Enumerable && ! innerDeepEqual ( val1 . errors , val2 . errors , strict , memos ) ) ) ) {
241255 return false ;
242256 }
243257 } else if ( isBoxedPrimitive ( val1 ) ) {
0 commit comments