diff --git a/packages/web-api/src/WebClient.ts b/packages/web-api/src/WebClient.ts index 36319ebbb..cd5f1b34c 100644 --- a/packages/web-api/src/WebClient.ts +++ b/packages/web-api/src/WebClient.ts @@ -166,6 +166,12 @@ export class WebClient extends Methods { * This object's teamId value */ private teamId?: string; + + /** + * Configuration to opt-out of attaching the original property to WebAPIRequestError. + * See {@link https://github.com/slackapi/node-slack-sdk/issues/1751} for more details. + */ + private attachOriginalToWebAPIRequestError: boolean; /** * @param token - An API token to authenticate/authorize with Slack (usually start with `xoxp`, `xoxb`) @@ -182,6 +188,7 @@ export class WebClient extends Methods { rejectRateLimitedCalls = false, headers = {}, teamId = undefined, + attachOriginalToWebAPIRequestError = true, }: WebClientOptions = {}) { super(); @@ -195,6 +202,7 @@ export class WebClient extends Methods { this.tlsConfig = tls !== undefined ? tls : {}; this.rejectRateLimitedCalls = rejectRateLimitedCalls; this.teamId = teamId; + this.attachOriginalToWebAPIRequestError = attachOriginalToWebAPIRequestError; // Logging if (typeof logger !== 'undefined') { @@ -613,7 +621,7 @@ export class WebClient extends Methods { const e = error as any; this.logger.warn('http request failed', e.message); if (e.request) { - throw requestErrorWithOriginal(e); + throw requestErrorWithOriginal(e, this.attachOriginalToWebAPIRequestError); } throw error; } diff --git a/packages/web-api/src/errors.ts b/packages/web-api/src/errors.ts index 9e8e7b720..0d73b8420 100644 --- a/packages/web-api/src/errors.ts +++ b/packages/web-api/src/errors.ts @@ -73,13 +73,16 @@ export function errorWithCode(error: Error, code: ErrorCode): CodedError { /** * A factory to create WebAPIRequestError objects * @param original - original error + * @param attachOriginal - config indicating if 'original' property should be added on the error object */ -export function requestErrorWithOriginal(original: Error): WebAPIRequestError { +export function requestErrorWithOriginal(original: Error, attachOriginal: boolean): WebAPIRequestError { const error = errorWithCode( new Error(`A request error occurred: ${original.message}`), ErrorCode.RequestError, ) as Partial; - error.original = original; + if(attachOriginal) { + error.original = original + } return (error as WebAPIRequestError); }