Yes, I realize all this. My question is how you can have such a system and still keep UI thread synchronization without having the opposite problem of marking all your synchronous methods.
What you want is something like Haskell that's lazy and its not about "executing statements" but rather "evaluting expressions".