private long maybeUpdate(long now, Node node) {
            String nodeConnectionId = node.idString();

            if (canSendRequest(nodeConnectionId, now)) {
                Optional<AbstractRequest.Builder<?>> requestOpt = clientTelemetrySender.createRequest();

                if (!requestOpt.isPresent())
                    return Long.MAX_VALUE;

                AbstractRequest.Builder<?> request = requestOpt.get();
                ClientRequest clientRequest = newClientRequest(nodeConnectionId, request, now, true);
                doSend(clientRequest, true, now);
                return defaultRequestTimeoutMs;
            } else {
                // Per KIP-714, if we can't issue a request to this broker node, let's clear it out
                // and try another broker on the next loop.
                stickyNode = null;
            }

            // If there's any connection establishment underway, wait until it completes. This prevents
            // the client from unnecessarily connecting to additional nodes while a previous connection
            // attempt has not been completed.
            if (isAnyNodeConnecting())
                return reconnectBackoffMs;

            if (connectionStates.canConnect(nodeConnectionId, now)) {
                // We don't have a connection to this node right now, make one
                log.debug("Initialize connection to node {} for sending telemetry request", node);
                initiateConnect(node, now);
                return reconnectBackoffMs;
            }

            // In either case, we just need to wait for a network event to let us know the selected
            // connection might be usable again.
            return Long.MAX_VALUE;
        }
Add a metadata request to the list of sends if we can make one
clients/src/main/java/org/apache/kafka/clients/NetworkClient.java