anchor.diff:  %% @private
   -spec handle_call(term(), gen_from(), state()) -> {stop, {unexpected, term()}, state()}.
   handle_call(Req, From, State) ->
  -    Callback = erlang:get(?CALLBACK),
  +    Callback = callback(),
       Callback:handle_call(Req, From, State).
   
   -spec handle_cast(term(), state()) -> {stop, term(), state()}.
  
positive.code:     {noreply, State};
  
  handle_info(Info, State) ->
      Callback = erlang:get(?CALLBACK),
      Callback:handle_info(Info, State).
  
  %% @private
  
negative.code: -spec handle_info(_, state()) -> {noreply, state()}.
  handle_info({response, #sip_response{} = Response, TxPid}, State) when is_pid(TxPid) ->
      % pass responses to UAC
      Callback = callback(),
      sip_ua_client:handle_response(Response, TxPid, Callback, State);
  
  handle_info({request, #sip_request{} = Request, _TxPid}, State) ->
      % this must be ACK (see RFC 6026), pass it to UAS
      Callback = callback(),
      sip_ua_server:handle_request(Request, Callback, State);
  handle_info({request, #sip_request{} = Request}, State) ->
      % pass requests to UAS
      Callback = callback(),
      sip_ua_server:handle_request(Request, Callback, State);
  
  handle_info({tx, TxPid, {error, Reason}}, State) ->
      % Transport error is reported by server transaction, pass to UAS
      Callback = callback(),
      sip_ua_server:handle_error(Reason, TxPid, Callback, State);
  
  handle_info({cancel_request, Id}, State) when is_reference(Id) ->
  