Always return a Promise from public api methods

This PR makes the public api consistent my always returning a Promise.