diff --git a/async.js b/async.js index 6c9ef2c..53f6952 100644 --- a/async.js +++ b/async.js @@ -15,12 +15,24 @@ function Async() { }; } - function bind(m, f) { - return function(g) { - m(function(x) { - f(x)(g); - }); + function bind() { + var m, steps, i; + if(arguments.length < 1) { + return wrap(); } + m = arguments[0]; + steps = arguments; + i = 1; + return function(f) { + var step = function(x) { + if(i < steps.length) { + steps[i++](x)(step); + } else { + return f(x); + } + } + m(step); + }; } function parallel() {