public void close() throws IOException {
        this.disconnected = true;
        Utils.closeAll(transportLayer, authenticator, receive, metadataRegistry);
    }
Socket server events that will change the mute state:
<ul>
  <li> REQUEST_RECEIVED: A request has been received from the client. </li>
  <li> RESPONSE_SENT: A response has been sent out to the client (ack != 0) or SocketServer has heard back from
                      the API layer (acks = 0) </li>
  <li> THROTTLE_STARTED: Throttling started due to quota violation. </li>
  <li> THROTTLE_ENDED: Throttling ended. </li>
</ul>

Valid transitions on each event are:
<ul>
  <li> REQUEST_RECEIVED: MUTED => MUTED_AND_RESPONSE_PENDING </li>
  <li> RESPONSE_SENT:    MUTED_AND_RESPONSE_PENDING => MUTED, MUTED_AND_THROTTLED_AND_RESPONSE_PENDING => MUTED_AND_THROTTLED </li>
  <li> THROTTLE_STARTED: MUTED_AND_RESPONSE_PENDING => MUTED_AND_THROTTLED_AND_RESPONSE_PENDING </li>
  <li> THROTTLE_ENDED:   MUTED_AND_THROTTLED => MUTED, MUTED_AND_THROTTLED_AND_RESPONSE_PENDING => MUTED_AND_RESPONSE_PENDING </li>
</ul>
clients/src/main/java/org/apache/kafka/common/network/KafkaChannel.java