From 8d0f51365a8faa5e277b71cf6ac7c522931f9bb5 Mon Sep 17 00:00:00 2001 From: Francois HERSENT Date: Thu, 21 Jul 2022 10:21:32 +0200 Subject: [PATCH 1/2] feat: add meta-data to stream error --- integration/grpc-web/example.ts | 7 +++++-- src/generate-grpc-web.ts | 7 +++++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/integration/grpc-web/example.ts b/integration/grpc-web/example.ts index 4a4ad64b4..c5f82d6d3 100644 --- a/integration/grpc-web/example.ts +++ b/integration/grpc-web/example.ts @@ -876,13 +876,16 @@ export class GrpcWebImpl { metadata: maybeCombinedMetadata, debug: this.options.debug, onMessage: (next) => observer.next(next), - onEnd: (code: grpc.Code, message: string) => { + onEnd: (code: grpc.Code, message: string, trailers: grpc.Metadata) => { if (code === 0) { observer.complete(); } else if (upStreamCodes.includes(code)) { setTimeout(upStream, DEFAULT_TIMEOUT_TIME); } else { - observer.error(new Error(`Error ${code} ${message}`)); + const err = new Error(message) as any; + err.code = code; + err.metadata = trailers; + observer.error(err); } }, }); diff --git a/src/generate-grpc-web.ts b/src/generate-grpc-web.ts index 435759298..b90896f08 100644 --- a/src/generate-grpc-web.ts +++ b/src/generate-grpc-web.ts @@ -316,13 +316,16 @@ function createInvokeMethod(ctx: Context) { metadata: maybeCombinedMetadata, debug: this.options.debug, onMessage: (next) => observer.next(next), - onEnd: (code: ${grpc}.Code, message: string) => { + onEnd: (code: ${grpc}.Code, message: string, trailers: grpc.Metadata) => { if (code === 0) { observer.complete(); } else if (upStreamCodes.includes(code)) { setTimeout(upStream, DEFAULT_TIMEOUT_TIME); } else { - observer.error(new Error(\`Error \${code} \${message}\`)); + const err = new Error(message) as any; + err.code = code; + err.metadata = trailers; + observer.error(err); } }, }); From 9d621c0aa077e87ea3449769c744b74c81e40ab6 Mon Sep 17 00:00:00 2001 From: Francois HERSENT Date: Thu, 21 Jul 2022 10:28:49 +0200 Subject: [PATCH 2/2] fix last commit --- src/generate-grpc-web.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/generate-grpc-web.ts b/src/generate-grpc-web.ts index b90896f08..9f64c2dfa 100644 --- a/src/generate-grpc-web.ts +++ b/src/generate-grpc-web.ts @@ -316,7 +316,7 @@ function createInvokeMethod(ctx: Context) { metadata: maybeCombinedMetadata, debug: this.options.debug, onMessage: (next) => observer.next(next), - onEnd: (code: ${grpc}.Code, message: string, trailers: grpc.Metadata) => { + onEnd: (code: ${grpc}.Code, message: string, trailers: ${grpc}.Metadata) => { if (code === 0) { observer.complete(); } else if (upStreamCodes.includes(code)) {