{{alias}}( fcns, clbk[, thisArg] ) Executes functions in series, passing the results of one function as arguments to the next function. The last argument applied to each waterfall function is a callback. The callback should be invoked upon a series function completion. The first argument is reserved as an error argument (which can be `null`). Any results which should be passed to the next function in the series should be provided beginning with the second argument. If any function calls the provided callback with a truthy `error` argument, the waterfall suspends execution and immediately calls the completion callback for subsequent error handling. Execution is *not* guaranteed to be asynchronous. To ensure asynchrony, wrap the completion callback in a function which either executes at the end of the current stack (e.g., `nextTick`) or during a subsequent turn of the event loop (e.g., `setImmediate`, `setTimeout`). Parameters ---------- fcns: Array Array of functions. clbk: Function Callback to invoke upon completion. thisArg: any (optional) Function context. Examples -------- > function foo( next ) { next( null, 'beep' ); }; > function bar( str, next ) { console.log( str ); next(); }; > function done( error ) { if ( error ) { throw error; } }; > var fcns = [ foo, bar ]; > {{alias}}( fcns, done ); {{alias}}.factory( fcns, clbk[, thisArg] ) Returns a reusable waterfall function. Parameters ---------- fcns: Array Array of functions. clbk: Function Callback to invoke upon completion. thisArg: any (optional) Function context. Returns ------- fcn: Function Waterfall function. Examples -------- > function foo( next ) { next( null, 'beep' ); }; > function bar( str, next ) { console.log( str ); next(); }; > function done( error ) { if ( error ) { throw error; } }; > var fcns = [ foo, bar ]; > var waterfall = {{alias}}.factory( fcns, done ); > waterfall(); > waterfall(); > waterfall(); See Also --------