More differences between C# and JS - Coroutines

I entered the sample code from this page (C#)
http://unity3d.com/support/documentation/ScriptReference/Coroutine.html

IEnumerator WaitAndPrint() {
    yield return new WaitForSeconds(5);
    print("WaitAndPrint " + Time.time);
}
IEnumerator Awake() {
    print("Starting " + Time.time);
    yield return WaitAndPrint();
    print("Done " + Time.time);
}

You would expect the second print to come 5 seconds after the first, but instead this is what I got.

Starting 0
Done 0.02

basically 1 fixed update frame.

When I tested the Javascript version of the same code (again, taken verbatim from the site), I got the correct results. Is this a bug?

Not a Unity bug, but an error in the JS-to-C# code converter. For one, the code should use Start instead of Awake, since Awake can’t be a coroutine. (The JS code should really not have code running outside a function anyway; although it works, I wouldn’t consider it good practice.) Also, you need to explicitly use StartCoroutine in C#, so it would be yield return StartCoroutine(WaitAndPrint());