PromiseKit refactor