diff --git a/packages/grpc-js/src/retrying-call.ts b/packages/grpc-js/src/retrying-call.ts index dbc036e42..fcc6865de 100644 --- a/packages/grpc-js/src/retrying-call.ts +++ b/packages/grpc-js/src/retrying-call.ts @@ -398,7 +398,7 @@ export class RetryingCall implements Call, DeadlineInfoProvider { return list.some( value => value === code || - value.toString().toLowerCase() === Status[code].toLowerCase() + value.toString().toLowerCase() === Status[code]?.toLowerCase() ); } diff --git a/packages/grpc-js/test/test-retry.ts b/packages/grpc-js/test/test-retry.ts index 0f76aae19..627836819 100644 --- a/packages/grpc-js/test/test-retry.ts +++ b/packages/grpc-js/test/test-retry.ts @@ -323,6 +323,21 @@ describe('Retries', () => { } ); }); + + it('Should not retry on custom error code', done => { + const metadata = new grpc.Metadata(); + metadata.set('succeed-on-retry-attempt', '2'); + metadata.set('respond-with-status', '300'); + client.echo( + { value: 'test value', value2: 3 }, + metadata, + (error: grpc.ServiceError, response: any) => { + assert(error); + assert.strictEqual(error.details, 'Failed on retry 0'); + done(); + } + ); + }); }); describe('Client with hedging configured', () => {