Async implementation.