anchor.diff:      exit(T).
   
   %% ---------------------------------------------------------------------------
  -%% # failover/[23]
  -%% ---------------------------------------------------------------------------
  -
  -%% Failover as a consequence of request_peer_down/2.
  -failover({_, #request{handler = Pid} = Req, TRef}, S) ->
  -    Pid ! {failover, TRef, rt(Req, S)}.
  +%% # failover/1-2
  +%% ---------------------------------------------------------------------------
  +
  +%% Failover as a consequence of request_peer_down/1: inform the
  +%% request process.
  +failover({_, Req, TRef}) ->
  +    #request{handler = Pid,
  +             packet = #diameter_packet{msg = M}}
  +        = Req,
  +    M /= undefined andalso (Pid ! {failover, TRef}).
  +%% Failover is not performed when msg = binary() since sending
  +%% pre-encoded binaries is only partially supported. (Mostly for
  +%% test.)
   
   %% Failover as a consequence of store_request/4.
  -failover(TRef, Seqs, S)
  +failover(TRef, Seqs)
     when is_reference(TRef) ->
       case lookup_request(Seqs, TRef) of
           #request{} = Req ->
  -            failover({Seqs, Req, TRef}, S);
  +            failover({Seqs, Req, TRef});
           false ->
               ok
       end.
  -
  -%% prepare_request returned a binary ...
  -rt(#request{packet = #diameter_packet{msg = undefined}}, _) ->
  -    false; %% Not what we should do but binaries are only parially supported
  -
  -%% ... or not.
  -rt(#request{packet = #diameter_packet{msg = Msg},
  -            dictionary = Dict}
  -   = Req,
  -   S) ->
  -    find_transport(get_destination(Dict, Msg), Req, S).
   
   %% ---------------------------------------------------------------------------
   %% # report_status/5
  
positive.code: 
      send_req(cb(ModX, prepare_request, [Pkt, SvcName, {TPid, Caps}]),
               Pkt,
               T,
               Opts,
               Caller,
               SvcName,
               []).
  
  send_req({send, P}, Pkt, T, Opts, Caller, SvcName, Fs) ->
      send_req(make_request_packet(P, Pkt), T, Opts, Caller, SvcName, Fs);
  
  send_req({discard, Reason} , _, _, _, _, _, _) ->
      {error, Reason};
  
negative.code:                    module = ModX},
  
      try
          TRef = send_request(TPid, Pkt, Req, SvcName, Timeout),
          ack(Caller),
          handle_answer(SvcName, AE, recv_answer(Timeout, SvcName, {TRef, Req}))
      after
          erase_requests(Pkt)
      end.
  
  %% Tell caller a send has been attempted.
  