anchor.diff:  %%
   %% If no destinations are provided, report error to the callback module.
   %% @end
  -send_internal(#tx_data{request = Request, fallback = [Top | Fallback]} = TxData, State) ->
  +next_destination(#req_info{request = Request, destinations = [Top | Fallback]} = ReqInfo, State) ->
       % send request to the top destination
       Request2 = sip_message:update_top_header('via', fun generate_branch/1, Request),
       {ok, TxKey} = sip_transaction:start_client_tx(self(), Top, Request2),
   
       % store tx id to {user data, fallback destinations, request} mapping
  -    TxData2 = TxData#tx_data{fallback = Fallback},
  -    Dict = dict:store(TxKey, TxData2, State#state.transactions),
  +    ReqInfo2 = ReqInfo#req_info{destinations = Fallback},
  +    Dict = dict:store(TxKey, ReqInfo2, State#state.transactions),
       {noreply, State#state{transactions = Dict}}.
   
   generate_branch(Via) ->
  
positive.code:     Destinations = sip_resolve:client_resolve(URI2),
  
      % Dispatch asynchronously
      gen_server:cast(self(), {send, Data, Destinations, Request}),
      ok.
  
  %%-----------------------------------------------------------------
  
negative.code:     case count_via(Msg) of
          1 ->
              % handle response from transaction layer
              ReqInfo = dict:fetch(TxKey, State#state.transactions),
              Response = Mod:handle_response(Msg, ReqInfo#req_info.user_data, ModState),
              wrap_response(Response, State);
          _Other ->
              % discard response
  