### 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
entry -> String.format(
                        Locale.ROOT,
                        "%s cannot discover [%s]",
                        entry.getKey().getName(),
                        entry.getValue().stream().map(DiscoveryNode::getName).collect(Collectors.joining(", "))
                    )
                )
                .collect(Collectors.joining("; "));
            logger.debug("The following nodes report discovery problems: {}", nodeDiscoveryProblemsMessage);
            return true;
        }
    }
    /**
     * This method checks that each master eligible node in the quorum thinks that it can form a quorum. If there are nodes that report a
     * problem forming a quorum, this method returns true. This method determines whether a node thinks that a quorum can be formed by
     * checking the value of that node's ClusterFormationState.hasDiscoveredQuorum field.
     * @param nodeToClusterFormationStateMap A map of each master node to its ClusterFormationState
     * @return True if any nodes in nodeToClusterFormationStateMap report a problem forming a quorum, false otherwise.
     */
    static boolean anyNodeInClusterReportsQuorumProblems(
        Map<DiscoveryNode, ClusterFormationFailureHelper.ClusterFormationState> nodeToClusterFormationStateMap
    ) {
        Map<DiscoveryNode, String> quorumProblems = new HashMap<>();
        for (Map.Entry<DiscoveryNode, ClusterFormationFailureHelper.ClusterFormationState> entry : nodeToClusterFormationStateMap
            .entrySet()) {
            ClusterFormationFailureHelper.ClusterFormationState clusterFormationState = entry.getValue();
            if (clusterFormationState.hasDiscoveredQuorum() == false) {
                quorumProblems.put(entry.getKey(), clusterFormationState.getDescription());
            }
        }