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
|