diff --git a/packages/grpc-js/src/filter-stack.ts b/packages/grpc-js/src/filter-stack.ts index f44c4383..622f3dd0 100644 --- a/packages/grpc-js/src/filter-stack.ts +++ b/packages/grpc-js/src/filter-stack.ts @@ -88,6 +88,10 @@ export class FilterStackFactory implements FilterFactory { this.factories.unshift(...filterFactories); } + clone(): FilterStackFactory { + return new FilterStackFactory(this.factories); + } + createFilter(): FilterStack { return new FilterStack( this.factories.map((factory) => factory.createFilter()) diff --git a/packages/grpc-js/src/internal-channel.ts b/packages/grpc-js/src/internal-channel.ts index 16f4b983..a8c6dc96 100644 --- a/packages/grpc-js/src/internal-channel.ts +++ b/packages/grpc-js/src/internal-channel.ts @@ -439,7 +439,7 @@ export class InternalChannel { parentCall: parentCall, }; - const call = new ResolvingCall(this, method, finalOptions, this.filterStackFactory, this.credentials._getCallCredentials(), getNextCallNumber()); + const call = new ResolvingCall(this, method, finalOptions, this.filterStackFactory.clone(), this.credentials._getCallCredentials(), getNextCallNumber()); if (this.channelzEnabled) { this.callTracker.addCallStarted();