## Waterfall

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