Skip to content

Commit 640a196

Browse files
committed
grpc-js: Defer evaluating caller stack until an error
1 parent e581aad commit 640a196

File tree

2 files changed

+11
-5
lines changed

2 files changed

+11
-5
lines changed

packages/grpc-js/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@grpc/grpc-js",
3-
"version": "1.7.0",
3+
"version": "1.7.1",
44
"description": "gRPC Library for Node - pure JS implementation",
55
"homepage": "https://grpc.io/",
66
"repository": "https://github.com/grpc/grpc-node/tree/master/packages/grpc-js",

packages/grpc-js/src/client.ts

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -321,7 +321,7 @@ export class Client {
321321
}
322322
let responseMessage: ResponseType | null = null;
323323
let receivedStatus = false;
324-
const callerStack = (new Error().stack!).split('\n').slice(1).join('\n');
324+
const callerStackError = new Error();
325325
call.start(callProperties.metadata, {
326326
onReceiveMetadata: (metadata) => {
327327
emitter.emit('metadata', metadata);
@@ -340,6 +340,7 @@ export class Client {
340340
receivedStatus = true;
341341
if (status.code === Status.OK) {
342342
if (responseMessage === null) {
343+
const callerStack = callerStackError.stack!.split('\n').slice(1).join('\n');
343344
callProperties.callback!(callErrorFromStatus({
344345
code: Status.INTERNAL,
345346
details: 'No message received',
@@ -349,6 +350,7 @@ export class Client {
349350
callProperties.callback!(null, responseMessage);
350351
}
351352
} else {
353+
const callerStack = callerStackError.stack!.split('\n').slice(1).join('\n');
352354
callProperties.callback!(callErrorFromStatus(status, callerStack));
353355
}
354356
emitter.emit('status', status);
@@ -447,7 +449,7 @@ export class Client {
447449
}
448450
let responseMessage: ResponseType | null = null;
449451
let receivedStatus = false;
450-
const callerStack = (new Error().stack!).split('\n').slice(1).join('\n');
452+
const callerStackError = new Error();
451453
call.start(callProperties.metadata, {
452454
onReceiveMetadata: (metadata) => {
453455
emitter.emit('metadata', metadata);
@@ -466,6 +468,7 @@ export class Client {
466468
receivedStatus = true;
467469
if (status.code === Status.OK) {
468470
if (responseMessage === null) {
471+
const callerStack = callerStackError.stack!.split('\n').slice(1).join('\n');
469472
callProperties.callback!(callErrorFromStatus({
470473
code: Status.INTERNAL,
471474
details: 'No message received',
@@ -475,6 +478,7 @@ export class Client {
475478
callProperties.callback!(null, responseMessage);
476479
}
477480
} else {
481+
const callerStack = callerStackError.stack!.split('\n').slice(1).join('\n');
478482
callProperties.callback!(callErrorFromStatus(status, callerStack));
479483
}
480484
emitter.emit('status', status);
@@ -577,7 +581,7 @@ export class Client {
577581
call.setCredentials(callProperties.callOptions.credentials);
578582
}
579583
let receivedStatus = false;
580-
const callerStack = (new Error().stack!).split('\n').slice(1).join('\n');
584+
const callerStackError = new Error();
581585
call.start(callProperties.metadata, {
582586
onReceiveMetadata(metadata: Metadata) {
583587
stream.emit('metadata', metadata);
@@ -593,6 +597,7 @@ export class Client {
593597
receivedStatus = true;
594598
stream.push(null);
595599
if (status.code !== Status.OK) {
600+
const callerStack = callerStackError.stack!.split('\n').slice(1).join('\n');
596601
stream.emit('error', callErrorFromStatus(status, callerStack));
597602
}
598603
stream.emit('status', status);
@@ -675,7 +680,7 @@ export class Client {
675680
call.setCredentials(callProperties.callOptions.credentials);
676681
}
677682
let receivedStatus = false;
678-
const callerStack = (new Error().stack!).split('\n').slice(1).join('\n');
683+
const callerStackError = new Error();
679684
call.start(callProperties.metadata, {
680685
onReceiveMetadata(metadata: Metadata) {
681686
stream.emit('metadata', metadata);
@@ -690,6 +695,7 @@ export class Client {
690695
receivedStatus = true;
691696
stream.push(null);
692697
if (status.code !== Status.OK) {
698+
const callerStack = callerStackError.stack!.split('\n').slice(1).join('\n');
693699
stream.emit('error', callErrorFromStatus(status, callerStack));
694700
}
695701
stream.emit('status', status);

0 commit comments

Comments
 (0)