Hmm, I figure it's more the the optimizer depends on code not exhibiting undefined behavior, like in C. It's not really the case that it's lazily evaluated, just the the causality gets screwy when you try to observe things in an asynchronous system without any kind of coherent memory model.