I think the great thing about IcedCoffeeScript + the ESC library is how it fits into more complicated flow logic, while allowing easy refactoring. Max doesn't really get into the otherwise impossible examples in his post.<p>Even if you're firing off RPC's awaiting in the middle of a loop or switch statement, you can move logic around just by shifting individual lines. Consider how simple this looks:<p><pre><code> for user_id in user_ids
await load_user user_id, esc defer user
user.whatever()
# etc., with user
</code></pre>
Writing that in plain Coffee or JS is impossible; using a pure async library is sort of possible but impossible to refactor.