### Description

The `sendRequest` method is asynchronous and notifies a 
`TransportResponseHandler` when it completes the excecution
(successfully or unsuccessfully). 

When opening the connection we only catch `NodeNotConnectedException`
( https://github.com/elastic/elasticsearch/blob/main/server/src/main/java/org/elasticsearch/transport/TransportService.java#L719 ) which is currently fine as no implementations
throw other type of exception however, it'd be best to catch `Exception` here
so the `handler` gets notified of potential exceptions (as opposed to the caller
having to `try/catch` the call to `sendRequest`)
server/src/main/java/org/elasticsearch/transport/TransportService.java
private final CountDownLatch countDownLatch = new CountDownLatch(1);
        @Override
        protected void closeInternal() {
            countDownLatch.countDown();
        }
        void stop() {
            decRef();
            try {
                final boolean completed = countDownLatch.await(30, TimeUnit.SECONDS);
                assert completed : "timed out waiting for all direct handlers to be enqueued";
            } catch (InterruptedException e) {
                assert false : e;
                Thread.currentThread().interrupt();
            }
        }
        @Nullable
        Releasable withRef() {
            if (tryIncRef()) {
                return this::decRef;
            } else {
                return null;
            }
        }
    }
    static {
        
        final String PERMIT_HANDSHAKES_FROM_INCOMPATIBLE_BUILDS_KEY = "es.unsafely_permit_handshake_from_incompatible_builds";
        if (System.getProperty(PERMIT_HANDSHAKES_FROM_INCOMPATIBLE_BUILDS_KEY) != null) {