docs: public void setKeepAliveTime(long keepAliveTime) {
          this.keepAliveTime = keepAliveTime;
          if(this.timerKey != null) {
              this.timerKey.remove();
          }
          this.timerKey = sink.getIoThread().executeAtInterval(new Runnable() {
              @Override
              public void run() {
                  if(shutdown || open == 0) {
                      if(timerKey != null) {
                          timerKey.remove();
                      }
                      return;
                  }
                  if(pooled == null) {
                      pooled = exchange.getConnection().getByteBufferPool().allocate();
                      pooled.getBuffer().put(":\n".getBytes(StandardCharsets.UTF_8));
                      pooled.getBuffer().flip();
                      writeListener.handleEvent(sink);
                  }
              }
          }, keepAliveTime, TimeUnit.MILLISECONDS);
      }