docs: protected Channel awaitChannel() throws IOException {
          Channel channel = this.channel;
          if(channel != null) {
              return channel;
          }
          synchronized (lock) {
              for(;;) {
                  if(state == State.CLOSED) {
                      throw ProtocolLogger.ROOT_LOGGER.channelClosed();
                  }
                  channel = this.channel;
                  if(channel != null) {
                      return channel;
                  }
                  if(state == State.CLOSING) {
                      throw ProtocolLogger.ROOT_LOGGER.channelClosed();
                  }
                  try {
                      lock.wait();
                  } catch (InterruptedException e) {
                      throw new IOException(e);
                  }
              }
          }
      }