anchor.diff:  
   %% Receive packets until a full message is received, then check
   %% whether to keep receiving.
  -recv(Bin, #transport{parent = Pid, frag = Head, throttled = false} = S) ->
  +recv(Bin, #transport{frag = Head, throttled = false} = S) ->
       case rcv(Head, Bin) of
           {Msg, B} ->
  -            diameter_peer:recv(Pid, Msg),
  -            throttle(S#transport{frag = B});
  +            throttle(S#transport{frag = B, throttled = Msg});
           Frag ->
               setopts(S),
               start_fragment_timer(S#transport{frag = Frag,
                                                flush = false})
       end.
  +
  +%% recv/1
  +
  +recv(S) ->
  +    recv(<<>>, S).
   
   %% rcv/2
   
  
positive.code: %% No fragment to flush or not receiving messages.
  flush(#transport{frag = Frag, throttled = B} = S)
    when Frag == <<>>;
         B ->
      S;
  
  %% Messages have been received since last timer expiry.
  
negative.code:     false = T,  %% assert
      recv(Bin, S);
  
  %% Make a new throttling callback after a timeout.
  transition(throttle, #transport{throttled = B} = S) ->
      true = false /= B,  %% assert
      throttle(S);
  
  %% Capabilties exchange has decided on whether or not to run over TLS.
  