These tests are ok but could be modernised a bit

- use `safeAwait` instead of awaiting the latch directly
- move assertions into handler, avoiding the need for `responseHolder`
- would it be better to use an `ActionListenerResponseHandler` rather than a raw `TransportResponseHandler`?
server/src/test/java/org/elasticsearch/action/admin/cluster/configuration/TransportAddVotingConfigExclusionsActionTests.java
otherNode2Exclusion = new VotingConfigExclusion(otherNode2);
        otherDataNode = DiscoveryNodeUtils.builder("data").name("data").roles(emptySet()).build();
        clusterService = createClusterService(threadPool, localNode);
    }
    private static DiscoveryNode makeDiscoveryNode(String name) {
        return DiscoveryNodeUtils.builder(name).name(name).roles(Set.of(DiscoveryNodeRole.MASTER_ROLE)).build();
    }
    @AfterClass
    public static void shutdownThreadPoolAndClusterService() {
        clusterService.stop();
        threadPool.shutdown();
    }
    @Before
    public void setupForTest() {
        final MockTransport transport = new MockTransport();
        transportService = transport.createTransportService(
            Settings.EMPTY,
            threadPool,
            TransportService.NOOP_TRANSPORT_INTERCEPTOR,
            boundTransportAddress -> localNode,
            null,
            emptySet()
        );
        final Settings.Builder nodeSettingsBuilder = Settings.builder();
        if (randomBoolean()) {
            staticMaximum = between(5, 15);
            nodeSettingsBuilder.put(MAXIMUM_VOTING_CONFIG_EXCLUSIONS_SETTING.getKey(), staticMaximum);
        } else {
            staticMaximum = MAXIMUM_VOTING_CONFIG_EXCLUSIONS_SETTING.get(Settings.EMPTY);
        }