@Test
    public void testServerDisconnectAfterInternalApiVersionRequest() throws Exception {
        final long numIterations = 5;
        double reconnectBackoffMaxExp = Math.log(reconnectBackoffMaxMsTest / (double) Math.max(reconnectBackoffMsTest, 1))
            / Math.log(reconnectBackoffExpBase);
        for (int i = 0; i < numIterations; i++) {
            selector.clear();
            awaitInFlightApiVersionRequest();
            selector.serverDisconnect(node.idString());

            // The failed ApiVersion request should not be forwarded to upper layers
            List<ClientResponse> responses = client.poll(0, time.milliseconds());
            assertFalse(client.hasInFlightRequests(node.idString()));
            assertTrue(responses.isEmpty());

            long expectedBackoff = Math.round(Math.pow(reconnectBackoffExpBase, Math.min(i, reconnectBackoffMaxExp))
                * reconnectBackoffMsTest);
            long delay = client.connectionDelay(node, time.milliseconds());
            assertEquals(expectedBackoff, delay, reconnectBackoffJitter * expectedBackoff);
            if (i == numIterations - 1) {
                break;
            }
            time.sleep(delay + 1);
        }
    }
This is a helper method that will execute two produce calls. The first call is expected to work and the
second produce call is intentionally made to emulate a request timeout. In the case that a timeout occurs
during a request, we want to ensure that we {@link Metadata#requestUpdate() request a metadata update} so that
on a subsequent invocation of {@link NetworkClient#poll(long, long) poll}, the metadata request will be sent.

<p/>

The {@link MetadataUpdater} has a specific method to handle
{@link NetworkClient.DefaultMetadataUpdater#handleServerDisconnect(long, String, Optional) server disconnects}
which is where we {@link Metadata#requestUpdate() request a metadata update}. This test helper method ensures
that is invoked by checking {@link Metadata#updateRequested()} after the simulated timeout.

@param requestTimeoutMs Timeout in ms
clients/src/test/java/org/apache/kafka/clients/NetworkClientTest.java