There are many ways to compose deferrables, primarily by grouping several of them together into something which is also a deferrable. See the em-scenario gem for examples:
Oh right that's definitely true and is much more elegant. I was talking about when a function written in synchronous style (in a long stack of synchronous calls) needs to call something asynchronous.
https://github.com/athoune/em-scenario
Note: I still think this approach sucks.
V8 provides a really awesome shared-nothing multithreading scheme via web workers. It's just nobody uses them.