Always return promised from the public api

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