docs: static void pingNode(final Node node, final HttpServerExchange exchange, final PingCallback callback) {
          if (node == null) {
              callback.failed();
              return;
          }
  
          final int timeout = node.getNodeConfig().getPing();
          exchange.dispatch(exchange.isInIoThread() ? SameThreadExecutor.INSTANCE : exchange.getIoThread(), new Runnable() {
              @Override
              public void run() {
                  node.getConnectionPool().connect(null, exchange, new ProxyCallback<ProxyConnection>() {
                      @Override
                      public void completed(final HttpServerExchange exchange, ProxyConnection result) {
                          final RequestExchangeListener exchangeListener = new RequestExchangeListener(callback, NodeHealthChecker.NO_CHECK, false);
                          exchange.dispatch(SameThreadExecutor.INSTANCE, new ConnectionPoolPingTask(result, exchangeListener, node.getNodeConfig().getConnectionURI()));
                          // Schedule timeout task
                          scheduleCancelTask(exchange.getIoThread(), exchangeListener, timeout, TimeUnit.SECONDS);
                      }
  
                      @Override
                      public void failed(HttpServerExchange exchange) {
                          callback.failed();
                      }
  
                      @Override
                      public void queuedRequestFailed(HttpServerExchange exchange) {
                          callback.failed();
                      }
  
                      @Override
                      public void couldNotResolveBackend(HttpServerExchange exchange) {
                          callback.failed();
                      }
  
                  }, timeout, TimeUnit.SECONDS, false);
              }
          });
      }