anchor.diff:  status_action(N) when 400 =< N, N < 500 -> perm_fail;
   status_action(_) -> temp_fail.
   
  -wait_response(Frame = #frame{},
  +wait_response(Frame = #frame{}, ReqStart,
                 State = #state{client = Client}) ->
       try cowboy_client:response(Client) of
           {ok, Status, _Headers, Client2} ->
  +            ReqEnd = os:timestamp(),
               Result = status_action(Status),
               ?INFO("drain_id=~p channel_id=~p dest=~s at=response "
  -                  "result=~p status=~p msg_count=~p",
  -                  log_info(State, [Result, Status, Frame#frame.msg_count])),
  +                  "result=~p status=~p msg_count=~p req_time=~p",
  +                  log_info(State, [Result, Status, Frame#frame.msg_count,
  +                                   ltcy(ReqStart, ReqEnd)])),
               case Result of
                   success ->
                       ready_to_send(sent_frame(Frame,
  
positive.code:     State#state{reconnect_tref=undefined};
  cancel_reconnect(State = #state{reconnect_tref=undefined}) ->
      State.
  
negative.code:          State = #state{client = Client})
    when Tries > 0 ->
      Req = request_to_iolist(Frame, State),
      ReqStart = os:timestamp(),
      try cowboy_client:raw_request(Req, Client) of
          {ok, Client2} ->
              wait_response(Frame, ReqStart, State#state{client=Client2});
          {error, Why} ->
              ?WARN("drain_id=~p channel_id=~p dest=~s at=send_request"
                    " tcp_err=~1000p",
  