Promises and tests

- Promises: Broccoli uses promises pretty extensively. Consequently they're the perfect match for quick-temp
- Tests: For the three functions to ensure they work as advertised

Note: This PR is a breaking change. There is no way not make it non-breaking because going async is inherently a breaking change.