Create fluent asynchronous APIs.
Chainable class and use the
chainable combinator to designate
asynchronous methods as being chainable. Methods wrapped with the
combinator will be treated as chainable when they are not passed a callback.
Each method in the chain will be executed in series, passing it's result to the
next method. Pass a callback to the final method to end the chain and begin
chainable = require 'chainable'numbers:number: chainable@numberspush numbercallback nulladd: chainableresult = 0while n = @numberspopresult += ncallback nullresultwait: chainablesetTimeout ->callback null100test =testnumber4number5waitadd# result == 9