code: @Override
      public void run(Timeout timeout) throws Exception {
          ChannelPipeline old = channel.getPipeline();
          CommandHandler<?, ?> handler = old.get(CommandHandler.class);
          RedisAsyncConnection<?, ?> connection = old.get(RedisAsyncConnection.class);
          ChannelPipeline pipeline = Channels.pipeline(this, handler, connection);
  
          Channel c = bootstrap.getFactory().newChannel(pipeline);
          c.getConfig().setOptions(bootstrap.getOptions());
          c.connect((SocketAddress) bootstrap.getOption("remoteAddress"));
      }
docs: Reconnect to the remote address that the closed channel was connected to.
  This creates a new {@link ChannelPipeline} with the same handler instances
  contained in the old channel's pipeline.
  
  @param timeout Timer task handle.
  
  @throws Exception when reconnection fails.