Cleanup a bit, just use AsyncResult instead of ProviderRequest so that
other AsyncResult implementations could also be plugged in.