## Waterfall **Kind**: global class * [Waterfall](#Waterfall) * [new Waterfall()](#new_Waterfall_new) * [._guardian](#Waterfall+_guardian) : Promise * [.guardian](#Waterfall+guardian) ⇒ Promise * [.waterfall(func)](#Waterfall+waterfall) ⇒ [AsyncFunction](#AsyncFunction) * [.chain(promise)](#Waterfall+chain) ⇒ Promise ### new Waterfall()

Instantiate a new Waterfall.

### waterfall.\_guardian : Promise

This is the internal Promise object which resolves when all the tasks of the Waterfall are done.

It will change any time this.waterfall is called.

Use [guardian](#Waterfall+guardian) instead which retrievethe latest version of the guardian.

**Kind**: instance property of [Waterfall](#Waterfall) **Access**: protected ### waterfall.guardian ⇒ Promise

Getter that gives a Promise which resolves when all tasks up to when this function is called are done.

This Promise cannot reject.

**Kind**: instance property of [Waterfall](#Waterfall) ### waterfall.waterfall(func) ⇒ [AsyncFunction](#AsyncFunction) **Kind**: instance method of [Waterfall](#Waterfall) | Param | Type | | --- | --- | | func | [AsyncFunction](#AsyncFunction) | ### waterfall.chain(promise) ⇒ Promise

Shorthand for chaining a promise to the Waterfall

**Kind**: instance method of [Waterfall](#Waterfall) | Param | Type | | --- | --- | | promise | Promise |