C#5.0のasync/awaitを学習しています。

下記のコンソールアプリケーションが期待した動作と異なる動きをします。
理由を教えていただけないでしょうか。

using System;
using System.Diagnostics;
using System.Threading.Tasks;

class Program
{
    static void Main(string[] args)
    {
        TestAsync().Wait();
        Console.ReadKey();
    }

    static async Task TestAsync()
    {
        var watch = Stopwatch.StartNew();

        var task = new Task(async () =>
            {
                Console.WriteLine("3. elapsed={0}", watch.ElapsedMilliseconds / 1000);
                await Task.Delay(TimeSpan.FromSeconds(1));
                Console.WriteLine("4. elapsed={0}", watch.ElapsedMilliseconds / 1000);
            });

        Task.Run(async () =>
            {
                Console.WriteLine("1. elapsed={0}", watch.ElapsedMilliseconds / 1000);
                await Task.Delay(TimeSpan.FromSeconds(1));
                Console.WriteLine("2. elapsed={0}", watch.ElapsedMilliseconds / 1000);
                task.Start(); // ここでtask処理開始
            });

        await task;

        Console.WriteLine("5. elapsed={0}", watch.ElapsedMilliseconds / 1000);
    }
}

期待する出力

1. elapsed=0
2. elapsed=1
3. elapsed=1
4. elapsed=2
5. elapsed=2

実際の出力

Visual Studio 2015 Community で実行しました。

1. elapsed=0
2. elapsed=1
3. elapsed=1
5. elapsed=1
4. elapsed=2

※4と5が期待とは逆
※5の出力が期待より1秒早い。