anchor.diff:    when node() == node(TPid) ->
       Seqs = diameter_codec:sequence_numbers(Bin),
       TRef = erlang:start_timer(Timeout, self(), TPid),
  -    Entry = {Seqs, Req, TRef},
  -
  -    %% Ensure that request table is cleaned even if we receive an exit
  -    %% signal. An alternative would be to simply trap exits, but
  -    %% callbacks are applied in this process, and these could possibly
  -    %% be expecting the prevailing behaviour.
  -    Self = self(),
  -    spawn(fun() -> diameter_lib:wait([Self]), erase_request(Entry) end),
  -
  -    store_request(Entry, TPid),
  +    Entry = {Seqs, #request{handler = Pid} = Req, TRef},
  +
  +    %% Ensure that request table is cleaned even if the process is
  +    %% killed.
  +    spawn(fun() -> diameter_lib:wait([Pid]), delete_request(Entry) end),
  +
  +    insert_request(Entry),
       send(TPid, Pkt),
       TRef;
   
  
positive.code:     TRef = send_request(TPid, Pkt, Req, SvcName, Tmo),
      {TRef, Req}.
  
  %% store_request/2
  
  store_request(T, TPid) ->
      ets:insert(?REQUEST_TABLE, T),
      ets:member(?REQUEST_TABLE, TPid)
          orelse begin
                     {_Seqs, _Req, TRef} = T,
                     self() ! {failover, TRef}  %% failover/1 may have missed
                 end.
  
  %% lookup_request/2
  %%
  
negative.code:             false
      end.
  
  %% delete_request/1
  
  delete_request({_Seqs, #request{handler = Pid, transport = TPid}, TRef} = T) ->
      Spec = [{R, [], [true]} || R <- [T, {TPid, {Pid, TRef}}]],
      ets:select_delete(?REQUEST_TABLE, Spec).
  
  %% have_request/2
  
  