private void handleTimeoutFailure(long now, Throwable cause) {
            if (log.isDebugEnabled()) {
                log.debug("{} timed out at {} after {} attempt(s)", this, now, tries,
                    new Exception(prettyPrintException(cause)));
            }
            if (cause instanceof TimeoutException) {
                handleFailure(cause);
            } else {
                handleFailure(new TimeoutException(this + " timed out at " + now
                    + " after " + tries + " attempt(s)", cause));
            }
        }
Handle a failure.

Depending on what the exception is and how many times we have already tried, we may choose to
fail the Call, or retry it. It is important to print the stack traces here in some cases,
since they are not necessarily preserved in ApiVersionException objects.

@param now           The current time in milliseconds.
@param throwable     The failure exception.
clients/src/main/java/org/apache/kafka/clients/admin/KafkaAdminClient.java