api documentation
refactor: move exceptions to their own class; return futures instead of promises in most places; replace "===" with "---" in api docs, make Future a subclass of Promise