Javascript has a syntax for this, though more as more streamlined way of writing lambdas. It would look kind of like this
add = (a,b) => a+b; id = () => "foo"; // No `id in js I think... delay = (ms) => sleep_if_it_existed(ms*0.001);
I find the syntax to be really difficult to be comfortable with, because it makes it hard at a glance to make out what is immediately executed expressions and what are executed at a later stage.
Without having made up my mind in any direction, I think this is my current state:
1. Asynchronous programming requires more language support than we provide today. One part of the equation is to improve promises and async-specific keywords and helper objects. One part is to improve functional programming constructs, which asynchronous tend to generate a lot of. This is a reason for doing this change.
2. The more powerful tools and abstractions we introduce, the harder it is to read the code. Example: I love how clean the code looks after a good application of implicit lambda, but it is very hard to figure out how the code works without knowing about it beforehand. This is a reason against doing this change.
3. I think we need to be very careful with new langauge features that are different from other syntactically similar langauges. Better is good, but different is bad.