Refactor `AbstractSimpleTransportTestCase` and `MockTransportService` to not use `Version.transportVersion` 
test/framework/src/main/java/org/elasticsearch/transport/AbstractSimpleTransportTestCase.java
return new StringMessageResponse(in);
                }
                @Override
                public String executor() {
                    return ThreadPool.Names.GENERIC;
                }
                @Override
                public void handleResponse(StringMessageResponse response) {
                    fail("got response instead of exception");
                }
                @Override
                public void handleException(TransportException exp) {
                    assertThat(exp, instanceOf(ReceiveTimeoutTransportException.class));
                    assertThat(exp.getStackTrace().length, equalTo(0));
                }
            }
        );
        assertThat(expectThrows(ExecutionException.class, res::get).getCause(), instanceOf(ReceiveTimeoutTransportException.class));
        expectThrows(ConnectTransportException.class, () -> {
            serviceB.disconnectFromNode(nodeA);
            connectToNode(serviceB, nodeA);
        });
        expectThrows(ConnectTransportException.class, () -> openConnection(serviceB, nodeA, TestProfiles.LIGHT_PROFILE));
    }
    public void testHostOnMessages() throws InterruptedException {
        final CountDownLatch latch = new CountDownLatch(2);
        final AtomicReference<InetSocketAddress> addressA = new AtomicReference<>();
        final AtomicReference<InetSocketAddress> addressB = new AtomicReference<>();
        serviceB.registerRequestHandler("internal:action1", ThreadPool.Names.SAME, TestRequest::new, (request, channel, task) -> {
            addressA.set(request.remoteAddress());