The problem was between the Tomcat server and the client. TomCat has a property called maxConnections which is 8192. Creating more will make it wait until there is room again for new connections. This caused the weird waiting behavior, it also affected the HttpClient in a way that it stops making requests to the second server even when running asynchronous.