HTTPCORE-672: cleanup of H2 connection validation code
diff --git a/httpclient5/src/main/java/org/apache/hc/client5/http/impl/nio/PoolingAsyncClientConnectionManager.java b/httpclient5/src/main/java/org/apache/hc/client5/http/impl/nio/PoolingAsyncClientConnectionManager.java
index a5d0aab..584951a 100644
--- a/httpclient5/src/main/java/org/apache/hc/client5/http/impl/nio/PoolingAsyncClientConnectionManager.java
+++ b/httpclient5/src/main/java/org/apache/hc/client5/http/impl/nio/PoolingAsyncClientConnectionManager.java
@@ -243,37 +243,38 @@
                     @Override
                     public void completed(final PoolEntry<HttpRoute, ManagedAsyncClientConnection> poolEntry) {
                         final ManagedAsyncClientConnection connection = poolEntry.getConnection();
-                        final TimeValue timeValue = PoolingAsyncClientConnectionManager.this.validateAfterInactivity;
-                        if (TimeValue.isNonNegative(timeValue) && connection != null &&
-                                poolEntry.getUpdated() + timeValue.toMilliseconds() <= System.currentTimeMillis()) {
-                            final ProtocolVersion protocolVersion = connection.getProtocolVersion();
-                            if (protocolVersion != null && protocolVersion.greaterEquals(HttpVersion.HTTP_2_0)) {
-                                connection.submitCommand(new PingCommand(new BasicPingHandler(new Callback<Boolean>() {
+                        if (connection != null) {
+                            if (connection.isOpen()) {
+                                final ProtocolVersion protocolVersion = connection.getProtocolVersion();
+                                if (protocolVersion != null && protocolVersion.greaterEquals(HttpVersion.HTTP_2_0)) {
+                                    final TimeValue timeValue = PoolingAsyncClientConnectionManager.this.validateAfterInactivity;
+                                    if (TimeValue.isNonNegative(timeValue) &&
+                                            poolEntry.getUpdated() + timeValue.toMilliseconds() <= System.currentTimeMillis()) {
+                                        connection.submitCommand(new PingCommand(new BasicPingHandler(new Callback<Boolean>() {
 
-                                    @Override
-                                    public void execute(final Boolean result) {
-                                        if (result == null || !result)  {
-                                            if (LOG.isDebugEnabled()) {
-                                                LOG.debug("{} connection {} is stale", id, ConnPoolSupport.getId(connection));
+                                            @Override
+                                            public void execute(final Boolean result) {
+                                                if (result == null || !result) {
+                                                    if (LOG.isDebugEnabled()) {
+                                                        LOG.debug("{} connection {} is stale", id, ConnPoolSupport.getId(connection));
+                                                    }
+                                                    poolEntry.discardConnection(CloseMode.IMMEDIATE);
+                                                }
+                                                leaseCompleted(poolEntry);
                                             }
-                                            poolEntry.discardConnection(CloseMode.IMMEDIATE);
-                                        }
-                                        leaseCompleted(poolEntry);
-                                    }
 
-                                })), Command.Priority.IMMEDIATE);
-                            } else {
-                                if (!connection.isOpen()) {
-                                    if (LOG.isDebugEnabled()) {
-                                        LOG.debug("{} connection {} is closed", id, ConnPoolSupport.getId(connection));
+                                        })), Command.Priority.IMMEDIATE);
+                                        return;
                                     }
-                                    poolEntry.discardConnection(CloseMode.IMMEDIATE);
                                 }
-                                leaseCompleted(poolEntry);
+                            } else {
+                                if (LOG.isDebugEnabled()) {
+                                    LOG.debug("{} connection {} is closed", id, ConnPoolSupport.getId(connection));
+                                }
+                                poolEntry.discardConnection(CloseMode.IMMEDIATE);
                             }
-                        } else {
-                            leaseCompleted(poolEntry);
                         }
+                        leaseCompleted(poolEntry);
                     }
 
                     @Override