Modernize API to use Promises backwards compatibly.

Placeholder PR for slides. Meat to be inserted later.