anchor.diff:  
   %% @private
   -spec handle_cast(_, #state{}) -> any().
  -handle_cast({send, UserData, Destinations, Request}, State) ->
  -    TxData = #tx_data{request = Request, user_data = UserData, fallback = Destinations},
  -    send_internal(TxData, State);
  +handle_cast({send, ReqInfo}, State) ->
  +    next_destination(ReqInfo, State);
   handle_cast(Req, #state{mod = Mod, mod_state = ModState} = State) ->
       Response = Mod:handle_cast(Req, ModState),
       wrap_response(Response, State).
  
positive.code: 
  %% @doc Handle failed requests (8.1.3.1, RFC 3261)
  %% @end
  handle_failure(Reason, TxData, #state{mod = Mod, mod_state = ModState} = State) ->
      {Status, Phrase} = reason_phrase(Reason),
      Response = sip_message:create_response(TxData#tx_data.request, Status, Phrase),
      Result = Mod:handle_response(Response, TxData#tx_data.user_data, ModState),
      wrap_response(Result, State).
  
  reason_phrase({timeout, _Timer}) -> {408, <<"Request Timeout">>};
  
negative.code: -include_lib("sip.hrl").
  
  -record(state, {transactions = dict:new(), mod, mod_state}).
  -record(req_info, {request, destinations, user_data}).
  
  -spec behaviour_info(callbacks | term()) -> [{Function :: atom(), Arity :: integer()}].
  behaviour_info(callbacks) ->
  