Turn AsyncHttpClient into an interface, close #497