anchor.diff:  disconnected(timeout, S = #state{}) ->
       %% Sleep when inactive, trigger fullsweep GC & Compact
       {next_state, disconnected, S, hibernate};
  +disconnected({timeout, _Ref, ?IDLE_TIMEOUT_MSG}, State) ->
  +    {next_state, disconnected, State, hibernate};
   disconnected(Msg, State) ->
       ?WARN("drain_id=~p channel_id=~p dest=~s err=unexpected_info "
             "data=\"~1000p\" state=disconnected",
  
positive.code:                                         Scheme, Host,
                                          Port, ?CONNECT_TIMEOUT) of
          {ok, Pid} ->
              ConnectEnd = os:timestamp(),
              ?INFO("drain_id=~p channel_id=~p dest=~s at=try_connect "
                    "attempt=success connect_time=~p",
  
negative.code: connected(timeout, S = #state{}) ->
      %% Sleep when inactive, trigger fullsweep GC & Compact
      {next_state, connected, S, hibernate};
  connected({timeout, _Ref, ?IDLE_TIMEOUT_MSG}, State=#state{}) ->
      case close_if_idle(State) of
          closed ->
              {next_state, disconnected,
               State#state{client = undefined}, hibernate};
          ok ->
              {next_state, ready_to_send, State}
      end;
  connected(Msg, State) ->
      ?WARN("drain_id=~p channel_id=~p dest=~s err=unexpected_info "
            "data=\"~1000p\" state=connected",
  