@Override
        public void run() {
            if (!ctx.channel().isOpen()) {
                return;
            }

            run(ctx);
        }
State changes from IDLE -> PING_SCHEDULED -> PENDING_PING_ACK -> IDLE and so on. When the
channel is inactive then the state changes to SHUTDOWN.
core/src/main/java/com/linecorp/armeria/internal/common/AbstractKeepAliveHandler.java