Synchronous exceptions thrown from complex expressions create abandoned promises. Solutions?

I guess the other options would be looking at @aclaymore's reference to this other proposal and seeing about altering it slightly.

So, instead of await.all <array>, it uses await.all[<lazy-evaluated expression 1, lazy-evaluated expression 2>]

This would make these await.* syntax additions do something other than just provide a shortand for Promise.* functions. And would bring it pretty close to your await[] idea.