下記のソースで、2秒経過した時点で、"2秒経過"が表示されて、その後、"終了"が出力されるはずなのですが、
開始した直後に "終了"が出力されて終了します。
どこが悪いのでしょうか?

static async Task Main(string[] args)
{
CancellationTokenSource cts = new CancellationTokenSource();

Task task1 = new Task(async () =>
{
await Task.Delay(5000);
Console.WriteLine("5秒経過");
}, cts.Token);


Task task2 = new Task(async () =>
{
await Task.Delay(2000);
Console.WriteLine("2秒経過");
}, cts.Token);

task1.Start();
task2.Start();

if (await Task.WhenAny(task1, task2) == task2)
{
cts.Cancel();
Console.WriteLine("終了");
}
}