Both DefaultAsyncHttpClient and ChannelManager call config.getThreadFactory, but when the result is null, DefaultAsyncHttpClient instantiates a DefaultThreadFactory with the pool name config.getThreadPoolName() + "-timer" while ChannelManager instantiates that same factory with the pool name config.getThreadPoolName().
This means that when you don't set a thread factory in the client config, you'll end up with two different pool names, but if you do set a thread factory in the client config, you'll end up with the same pool name for both use cases.
Should getThreadFactory take a pool name (or even just a suffix) to allow differentiating its use cases in DefaultAsyncHttpClient and ChannelManager?