anchor.diff:      TRef = send_request(TPid, Pkt, Req, SvcName, Tmo),
       {TRef, Req}.
   
  -%% store_request/4
  -
  -store_request(TPid, Bin, Req, Timeout) ->
  -    Seqs = diameter_codec:sequence_numbers(Bin),
  -    TRef = erlang:start_timer(Timeout, self(), TPid),
  -    ets:insert(?REQUEST_TABLE, {Seqs, Req, TRef}),
  +%% store_request/2
  +
  +store_request(T, TPid) ->
  +    ets:insert(?REQUEST_TABLE, T),
       ets:member(?REQUEST_TABLE, TPid)
  -        orelse (self() ! {failover, TRef}),  %% failover/1 may have missed
  -    TRef.
  +        orelse begin
  +                   {_Seqs, _Req, TRef} = T,
  +                   (self() ! {failover, TRef})  %% failover/1 may have missed
  +               end.
   
   %% lookup_request/2
   %%
  
positive.code:   when is_pid(TPid) ->
      lists:foreach(fun failover/1, match_requests(TPid));
  %% Note that a request process can store its request after failover
  %% notifications are sent here: store_request/4 sends the notification
  %% in that case.
  
  %% Failover as a consequence of request_peer_down/1: inform the
  
negative.code: %% send/1
  
  send({TPid, Pkt, #request{handler = Pid} = Req0, SvcName, Timeout, TRef}) ->
      Req = Req0#request{handler = self()},
      recv(TPid, Pid, TRef, send_request(TPid, Pkt, Req, SvcName, Timeout)).
  
  %% recv/4
  %%
  %% Relay an answer from a remote node.
  
  recv(TPid, Pid, TRef, LocalTRef) ->
      receive
          {answer, _, _, _, _} = A ->
              Pid ! A;
          {failover = T, LocalTRef} ->
              Pid ! {T, TRef};
          T ->
              exit({timeout, LocalTRef, TPid} = T)
      end.
  
  %% send/2
  