diff --git a/.changeset/fifty-oranges-kneel.md b/.changeset/fifty-oranges-kneel.md new file mode 100644 index 00000000000..34dcb2c54bd --- /dev/null +++ b/.changeset/fifty-oranges-kneel.md @@ -0,0 +1,5 @@ +--- +"@smithy/core": patch +--- + +set explicit enumerability on error.$response diff --git a/.changeset/fuzzy-goats-hope.md b/.changeset/fuzzy-goats-hope.md new file mode 100644 index 00000000000..497860e9610 --- /dev/null +++ b/.changeset/fuzzy-goats-hope.md @@ -0,0 +1,5 @@ +--- +"@smithy/middleware-serde": patch +--- + +explicit non-enumerability for error.$response diff --git a/packages/core/src/submodules/cbor/SmithyRpcV2CborProtocol.ts b/packages/core/src/submodules/cbor/SmithyRpcV2CborProtocol.ts index 74e1eba9903..303a6ed42a2 100644 --- a/packages/core/src/submodules/cbor/SmithyRpcV2CborProtocol.ts +++ b/packages/core/src/submodules/cbor/SmithyRpcV2CborProtocol.ts @@ -99,7 +99,6 @@ export class SmithyRpcV2CborProtocol extends RpcProtocol { const errorMetadata = { $metadata: metadata, - $response: response, $fault: response.statusCode <= 500 ? ("client" as const) : ("server" as const), }; diff --git a/packages/core/src/submodules/schema/middleware/schemaDeserializationMiddleware.ts b/packages/core/src/submodules/schema/middleware/schemaDeserializationMiddleware.ts index aecd3258381..3d2167f5603 100644 --- a/packages/core/src/submodules/schema/middleware/schemaDeserializationMiddleware.ts +++ b/packages/core/src/submodules/schema/middleware/schemaDeserializationMiddleware.ts @@ -41,6 +41,11 @@ export const schemaDeserializationMiddleware = // For security reasons, the error response is not completely visible by default. Object.defineProperty(error, "$response", { value: response, + // we need to define these properties explicitly because + // the service exception class may have set the value to undefined, but populated the key. + enumerable: false, + writable: false, + configurable: false, }); if (!("$metadata" in error)) { diff --git a/packages/middleware-serde/src/deserializerMiddleware.ts b/packages/middleware-serde/src/deserializerMiddleware.ts index a5e5ae571a0..d79da5d42f1 100644 --- a/packages/middleware-serde/src/deserializerMiddleware.ts +++ b/packages/middleware-serde/src/deserializerMiddleware.ts @@ -40,6 +40,11 @@ export const deserializerMiddleware = // For security reasons, the error response is not completely visible by default. Object.defineProperty(error, "$response", { value: response, + // we need to define these properties explicitly because + // the service exception class may have set the value to undefined, but populated the key. + enumerable: false, + writable: false, + configurable: false, }); if (!("$metadata" in error)) {