@Override public void getConnectionAsync(final SingleResultCallback<AsyncConnection> callback) { isTrue("open", !isClosed()); connectionPool.getAsync( new SingleResultCallback<InternalConnection>() { @Override public void onResult(final InternalConnection result, final Throwable t) { if (t instanceof MongoSecurityException) { invalidate(); } if (t != null) { callback.onResult(null, t); } else { callback.onResult( connectionFactory.createAsync( result, new DefaultServerProtocolExecutor(), clusterConnectionMode), null); } } }); }