### 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
if (lifecycle.stoppedOrClosed()) {
            /*
             * If we are not started the exception handling will remove the request holder again and calls the handler to notify the
             * caller. It will only notify if toStop hasn't done the work yet.
             */
            handleInternalSendException(action, node, requestId, timeoutHandler, new NodeClosedException(localNode));
            return;
        }
        try {
            if (timeoutHandler != null) {
                assert options.timeout() != null;
                timeoutHandler.scheduleTimeout(options.timeout());
            }
            connection.sendRequest(requestId, action, request, options); 
        } catch (final Exception e) {
            handleInternalSendException(action, node, requestId, timeoutHandler, e);
        }
    }
    private void handleInternalSendException(
        String action,
        DiscoveryNode node,
        long requestId,
        @Nullable TimeoutHandler timeoutHandler,
        Exception failure
    ) {
        final Transport.ResponseContext<? extends TransportResponse> contextToNotify = responseHandlers.remove(requestId);
        
        if (contextToNotify == null) {
            logger.debug("Exception while sending request, handler likely already notified due to timeout", failure);
            return;