anchor.diff:  make_from_context(#state{transport_mod = TMod, transport_state = TState}, Request) ->
       #context{transport_mod = TMod, transport_state = TState, request = Request}.
   
  -refresh_idle_timeout(State) ->
  +cancel_idle_timeout(State) ->
       case State#state.idle_timer of
           undefined ->
               ok;
           OldTimer ->
               {ok, cancel} = timer:cancel(OldTimer)
  -    end,
  +    end.
   
  +start_idle_timeout(State) ->
       case State#state.idle_timeout of
           infinity ->
  -            State#state{idle_timer = undefined};
  +            State#state{idle_timer = undefined, idle_timeout_ref = undefined};
           IdleTimeout ->
  -            {ok, NewTimer} = timer:apply_after(IdleTimeout, gen_server, cast, [self(), idle_timeout]),
  -            State#state{idle_timer = NewTimer}
  +            IdleTimeoutRef = make_ref(),
  +            {ok, NewTimer} = timer:apply_after(IdleTimeout, gen_server, cast, [self(), {idle_timeout, IdleTimeoutRef}]),
  +            State#state{idle_timer = NewTimer, idle_timeout_ref = IdleTimeoutRef}
       end.
  
positive.code: % -type reply() :: {ok, hello_json:value()} | {error, hello_proto:error_reply()}.
  
  -spec behaviour_info(callbacks) -> [{atom(), integer()}].
  behaviour_info(callbacks) -> [{init,2}, {handle_request,4}, {handle_info,3}, {terminate,3}];
  behaviour_info(_Other)    -> undefined.
  
  start(TransportMod, TransportState, HandlerMod, HandlerArgs) ->
      gen_server:start(?MODULE, {TransportMod, TransportState, HandlerMod, HandlerArgs}, []).
  
negative.code: 
  %% --------------------------------------------------------------------------------
  %% -- gen_server callbacks
  -record(state, {transport_mod, transport_state, mod, mod_state, idle_timer, idle_timeout_ref, idle_timeout = infinity}).
  
  init({TransportMod, Transport, HandlerModule, Args}) ->
      State0 = #state{mod = HandlerModule, transport_mod = TransportMod, transport_state = Transport},
      State1 = start_idle_timeout(State0),
      case HandlerModule:init(make_context(State1), Args) of
          {ok, HandlerState} ->
              {ok, State1#state{mod_state = HandlerState}};
  