Responsible for sequentially executing actions on the database
**Kind**: global class * [Waterfall](#Waterfall) * [new Waterfall()](#new_Waterfall_new) * [.guardian](#Waterfall+guardian) ⇒Promise
* [.waterfall(func)](#Waterfall+waterfall) ⇒ [AsyncFunction
](#AsyncFunction)
* [.chain(promise)](#Waterfall+chain) ⇒ Promise
### new Waterfall()
Instantiate a new Waterfall.
### 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)
**Params**
- func [AsyncFunction
](#AsyncFunction)
### waterfall.chain(promise) ⇒ Promise
Shorthand for chaining a promise to the Waterfall
**Kind**: instance method of [Waterfall
](#Waterfall)
**Params**
- promise Promise