public async Task Copy_DoNothingWhenNoSegments()
    {
        var segments         = new List <byte[]>();
        var receivedSegments = new List <byte[]>();
        var body             = new CachedResponseBody(segments, 0);

        var pipe = new Pipe();

        using var cts = new CancellationTokenSource(_timeout);

        var receiverTask = ReceiveDataAsync(pipe.Reader, receivedSegments, cts.Token);
        var copyTask     = body.CopyToAsync(pipe.Writer, cts.Token).ContinueWith(_ => pipe.Writer.CompleteAsync());

        await Task.WhenAll(receiverTask, copyTask);

        Assert.Empty(receivedSegments);
    }
    static async Task CopyDataAsync(CachedResponseBody body, PipeWriter writer, CancellationToken cancellationToken)
    {
        await body.CopyToAsync(writer, cancellationToken);

        await writer.CompleteAsync();
    }