Modernize API to use Promises cleanly (Transition APIs left to UAs)

Placeholder PR for slides. Meat to be inserted later.