Bug 1027725 - Make calendar app async operations use promises

**protip:** `forEach` accepts a second argument `this` which should be *faster*