final AtomicReference<Throwable> throwRef = new AtomicReference<Throwable>();
final Thread abortingThread = new Thread(new Runnable() {
public void run() {
try {
stallingSocketFactory.waitForState();
conn.shutdown();
mgr.releaseConnection(conn, null, -1, null);
connectLatch.countDown();
} catch (final Throwable e) {
throwRef.set(e);
}