anchor.diff:  
   reconnect_timer(#state {
           reconnect_state = undefined
  -    } = State) ->
  +    } = State, ClientState) ->
   
       {ok, State#state {
           socket = undefined
  -    }};
  +    }, ClientState};
   reconnect_timer(#state {
           reconnect_state = #reconnect_state {
               current = undefined,
               min = none
           } = ReconnectState
  -    } = State) ->
  -
  -    {ok, State2} = handle_msg(?MSG_CONNECT, State#state {
  +    } = State, ClientState) ->
  +
  +    {ok, State2, ClientState2} = handle_msg(?MSG_CONNECT, State#state {
           reconnect_state = ReconnectState#reconnect_state {
               current = ?DEFAULT_RECONNECT_MIN
           },
           socket = undefined
  -    }),
  -
  -    {ok, State2};
  +    }, ClientState),
  +
  +    {ok, State2, ClientState2};
   reconnect_timer(#state {
           reconnect_state = ReconnectState
  -    } = State) ->
  +    } = State, ClientState)  ->
   
       #reconnect_state {
           current = Current
  
positive.code:     timer_ref        :: undefined | reference()
  }).
  
  -type state() :: #state {}.
  
  %% public
  
negative.code:         reconnect_state = ReconnectState2,
          socket = undefined,
          timer_ref = TimerRef
      }, ClientState}.
  
  reply(Name, _Reply, #cast {pid = undefined}) ->
      shackle_backlog:decrement(Name);
  