private async Task Intercept(HttpContext context, bool isText, string format, ITranscoder transcoder) { var textPostfix = isText ? "-text" : ""; var formatPostfix = format != null ? $"+{format}" : ""; context.Features.Set <IHttpResponseTrailersFeature>(this); context.Request.Protocol = "HTTP/2"; context.Request.ContentType = $"application/grpc{formatPostfix}"; context.Response.OnStarting(() => { context.Response.ContentType = $"application/grpc-web{textPostfix}{formatPostfix}"; return(Task.CompletedTask); }); await transcoder.TranscodeStream(_next); if (Trailers.Count > 0) { _logger.LogDebug("Adding trailers"); await transcoder.TranscodeTrailers(Trailers); } else { _logger.LogDebug("Skipping trailers"); } }