anchor.diff:  
   -export([user_agent/0
            ,drain_buf_framing/1
  -         ,backoff_slots/1
  +         ,backoff_slot/1
           ]).
   
   %% ------------------------------------------------------------------
  
positive.code:      end}.
  
  set_reconnect_timer(State = #state{reconnect_tref=undefined}) ->
      Time = logplex_app:config(http_reconnect_time, 10) * backoff_slots(State#state.reconnect_attempt),
      reconnect_in(Time, State);
  set_reconnect_timer(State = #state{}) -> State.
  
  backoff_slots(Attempt) when is_integer(Attempt), Attempt > 0 ->
      Slot = erlang:min(logplex_app:config(http_max_retries, 10), Attempt),
       erlang:max(1, trunc((math:pow(2, random:uniform(Slot)) - 1) / 2));
  backoff_slots(_) ->
      0.
  
  reconnect_in(MS, State = #state{ reconnect_attempt=N }) ->
      Ref = erlang:start_timer(MS, self(), ?RECONNECT_MSG),
  
negative.code:             ready_to_send(NewTimerState#state{client=Pid,
                                                connect_time=ConnectEnd,
                                                reconnect_attempt=0});
          ignore ->
              http_fail(State);
          Why ->
              ConnectEnd = os:timestamp(),
              ?WARN("drain_id=~p channel_id=~p dest=~s at=try_connect "
  