Refactor all async execution to use promises.