The AsyncHttpClientFactory returns back an instance of AsyncHttpClient. The
actual instance is determined by the system property
'org.async.http.client.impl'. If the system property doesn't exist then it
checks for a property file 'asynchttpclient.properties' and looks for a
property 'org.async.http.client.impl' in there. If it finds it then returns
an instance of that class. If there is an exception while reading the
properties file or system property it throws a RuntimeException
AsyncHttpClientImplException. If any of the constructors of the instance
throws an exception it thows a AsyncHttpClientImplException. By default if
neither the system property or the property file exists then it will return
the default instance of
DefaultAsyncHttpClient