### 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/cluster/coordination/CoordinationDiagnosticsService.java
*                                  it) from each master eligible node in the cluster
     * @param nodeHasMasterLookupTimeframe The value of health.master_history.has_master_lookup_timeframe
     * @param explain If true, details are returned
     * @return A CoordinationDiagnosticsResult with a RED status
     */
    static CoordinationDiagnosticsResult diagnoseOnHaveNotSeenMasterRecentlyAndWeAreMasterEligible(
        MasterHistory localMasterHistory,
        Collection<DiscoveryNode> masterEligibleNodes,
        Coordinator coordinator,
        ConcurrentMap<DiscoveryNode, ClusterFormationStateOrException> clusterFormationResponses,
        TimeValue nodeHasMasterLookupTimeframe,
        boolean explain
    ) {
        final CoordinationDiagnosticsResult result;
        /*
         * We want to make sure that the same elements are in this set every time we loop through it. We don't care if values are added
         * while we're copying it, which is why this is not synchronized. We only care that once we have a copy it is not changed.
         */
        final Map<DiscoveryNode, ClusterFormationStateOrException> nodeToClusterFormationResponses = clusterFormationResponses == null
            ? Map.of()
            : Map.copyOf(clusterFormationResponses);
        for (Map.Entry<DiscoveryNode, ClusterFormationStateOrException> entry : nodeToClusterFormationResponses.entrySet()) {
            Exception remoteException = entry.getValue().exception();
            if (remoteException != null) {
                return new CoordinationDiagnosticsResult(
                    CoordinationDiagnosticsStatus.RED,
                    String.format(
                        Locale.ROOT,
                        "No master node observed in the last %s, and an exception occurred while reaching out to %s for diagnosis",
                        nodeHasMasterLookupTimeframe,