Defer promise until callback is ready