### 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
void cancelPollingClusterFormationInfo() {
        assert ThreadPool.assertCurrentThreadPool(ClusterApplierService.CLUSTER_UPDATE_THREAD_NAME);
        if (clusterFormationInfoTasks != null) {
            /*
             * There is a slight risk here that a new Cancellable is added to clusterFormationInfoTasks after we begin iterating in the next
             * line. We are calling this an acceptable risk because it will result in an un-cancelled un-cancellable task, but it will not
             * reschedule itself so it will not be around long. It is possible that cancel() will be called on a Cancellable concurrently
             * by multiple threads, but that will not cause any problems.
             */
            clusterFormationInfoTasks.values().forEach(Scheduler.Cancellable::cancel);
            clusterFormationInfoTasks = null;
            clusterFormationResponses = null;
        }
    }
    /**
     * This method returns quickly, but in the background schedules to query the remote node's cluster formation state in 10 seconds
     * unless cancel() is called on the Cancellable that this method returns.
     * @param node The node to poll for cluster formation information
     * @param responseConsumer The consumer of the cluster formation info for the node, or the exception encountered while contacting it
     * @return A Cancellable for the task that is scheduled to fetch cluster formation information
     * @throws EsRejectedExecutionException If the task cannot be scheduled, possibly because the node is shutting down.
     */
    private Scheduler.Cancellable fetchClusterFormationInfo(
        DiscoveryNode node,
        Consumer<ClusterFormationStateOrException> responseConsumer
    ) {
        return sendTransportRequest(
            node,
            responseConsumer,
            ClusterFormationInfoAction.INSTANCE,