public async Task InvokeAsync(PipelineContext context, PipelineDelegate next) { if (!context.GetFirst(out HttpRequestMessage httpRequestMessage)) { throw new PipelineDependencyException <HttpRequestMessage>(this); } HttpClientRequest request = new HttpClientRequest(httpRequestMessage); CancellationTokenSource cts = new CancellationTokenSource(RequestTimeout); var cancellationTokens = context.Get <CancellationToken>(); var token = cancellationTokens.Any() ? CancellationTokenSource.CreateLinkedTokenSource( cancellationTokens.Concat(new[] { cts.Token }).ToArray() ).Token : cts.Token; try { var result = await request.InvokeAsync(token); context.Add(result); await next.Invoke(); } catch (HttpRequestException ex) { throw new PipelineException(this, ex.Message, ex); } catch (Exception ex) { throw new PipelineException(this, ex.Message, ex); } }