docs: @Nullable IOException exchangeMessageDone(
        Exchange exchange, boolean requestDone, boolean responseDone, @Nullable IOException e) {
      boolean exchangeDone = false;
      synchronized (connectionPool) {
        if (exchange != this.exchange) {
          return e; // This exchange was detached violently!
        }
        boolean changed = false;
        if (requestDone) {
          if (!exchangeRequestDone) changed = true;
          this.exchangeRequestDone = true;
        }
        if (responseDone) {
          if (!exchangeResponseDone) changed = true;
          this.exchangeResponseDone = true;
        }
        if (exchangeRequestDone && exchangeResponseDone && changed) {
          exchangeDone = true;
          this.exchange.connection().successCount++;
          this.exchange = null;
        }
      }
      if (exchangeDone) {
        e = maybeReleaseConnection(e, false);
      }
      return e;
    }