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
doneLatch.countDown();
                }
            });
        }
        @Override
        public void onClusterServiceClose() {
            throw new AssertionError("unexpected close");
        }
        @Override
        public void onTimeout(TimeValue timeout) {
            throw new AssertionError("unexpected timeout");
        }
    }
    static class FakeReconfigurator extends Reconfigurator {
        private final AtomicBoolean canModifyVotingConfiguration = new AtomicBoolean(true);
        FakeReconfigurator() {
            super(Settings.EMPTY, new ClusterSettings(Settings.EMPTY, ClusterSettings.BUILT_IN_CLUSTER_SETTINGS));
        }
        @Override
        public void ensureVotingConfigCanBeModified() {
            if (canModifyVotingConfiguration.get() == false) {
                throw new IllegalStateException("Unable to modify the voting configuration");
            }
        }
        void disableUserVotingConfigModifications() {
            canModifyVotingConfiguration.set(false);
        }
    }
}