compose = (calls)-> (req, res, next)->
if calls.length
calls[0] req, res, ->
call = compose calls.slice 1
call req, res, next
else if next
next()
a = (req, res, next)->
console.log 'a'
next()
b = (req, res, next)->
console.log 'b'
next()
c = (req, res, next)->
console.log 'c'
next()
compose([a, b, c]) 1, 2, ->
console.log 'done'