_.waterfall(function(arg1, callback) {
callback("some args")
}).then( /* other function */
).done( /* call after "then" function finish */
).fail( /* call when any "then" function error */
).anyway( /* call another done or fail */
)("first function args")
_.deferred(function(arg1, callback) {
callback("some args")
}).then( /* other function */
).fail( /* call when any "then" function error */
).anyway( /* call another done or fail */)
Read unit test for more info.