private async Task <ChannelReader <ValueTask <RequestSummary> > > BuildUserRequestChannelReader( Stage stage, CancellationToken cancellationToken) { var totalRequests = stage.Requests; var requestChannel = Channel.CreateBounded <ValueTask <RequestSummary> >( new BoundedChannelOptions(totalRequests) { SingleReader = false, SingleWriter = true }); _logger.LogInformation($"Building bounded request channel: {totalRequests}"); // Separate producer thread await Run(() => { Enumerable .Range(0, totalRequests) .ToList() .ForEach(async _ => { var request = _requestClient.RecordRequestAsync( GetRandomUrl(), stage, _configuration.Headers, cancellationToken); await requestChannel.Writer.WriteAsync(request, cancellationToken); }); requestChannel.Writer.TryComplete(); }, cancellationToken); return(requestChannel.Reader); }