nice-grpc-opentelemetry
Version:
OpenTelemetry instrumentation for nice-grpc
17 lines (14 loc) • 557 B
text/typescript
import {context, Context} from '@opentelemetry/api';
export function bindAsyncGenerator<T = unknown, TReturn = any, TNext = unknown>(
ctx: Context,
generator: AsyncGenerator<T, TReturn, TNext>,
): AsyncGenerator<T, TReturn, TNext> {
return {
next: context.bind(ctx, generator.next.bind(generator)),
return: context.bind(ctx, generator.return.bind(generator)),
throw: context.bind(ctx, generator.throw.bind(generator)),
[Symbol.asyncIterator]() {
return bindAsyncGenerator(ctx, generator[Symbol.asyncIterator]());
},
};
}