public async Task SendResponseAsync(Header header, StreamingResponse response, CancellationToken cancellationToken) { if (header == null) { throw new ArgumentNullException(nameof(header)); } if (header.Type != PayloadTypes.Response) { throw new InvalidOperationException($"StreamingSession SendResponseAsync expected Response payload, but instead received a payload of type {header.Type}"); } if (response == null) { throw new ArgumentNullException(nameof(response)); } var payload = new ResponsePayload() { StatusCode = response.StatusCode, }; if (response.Streams != null) { payload.Streams = new List <StreamDescription>(); foreach (var contentStream in response.Streams) { var description = GetStreamDescription(contentStream); payload.Streams.Add(description); } } await _sender.SendResponseAsync(header.Id, payload, cancellationToken).ConfigureAwait(false); if (response.Streams != null) { foreach (var stream in response.Streams) { await _sender.SendStreamAsync(stream.Id, await stream.Content.ReadAsStreamAsync().ConfigureAwait(false), cancellationToken).ConfigureAwait(false); } } }