anchor.diff:  %% For 429 errors, we perform an exponential backoff up to 2.17 hours.
   %% We use Backoff time as a timeout/failure end.
   backoff(Worker, #httpdb{backoff = Backoff} = HttpDb, Params) ->
  +    MaxBackOff = get_max_back_off(),
  +    MaxBackOffLog = get_back_off_log_threshold(),
       ok = timer:sleep(random:uniform(Backoff)),
  -    Backoff2 = round(Backoff*?BACKOFF_EXP),
  -    NewBackoff = erlang:min(Backoff2, ?MAX_BACKOFF_WAIT),
  +    Backoff2 = round(Backoff*get_back_off_exp()),
  +    NewBackoff = erlang:min(Backoff2, MaxBackOff),
       NewHttpDb = HttpDb#httpdb{backoff = NewBackoff},
       case Backoff2 of
  -        W0 when W0 > ?MAX_BACKOFF_WAIT ->
  +        W0 when W0 > MaxBackOff ->
               report_error(Worker, HttpDb, Params, {error,
                   "Long 429-induced Retry Time Out"});
  -        W1 when W1 >= ?MAX_BACKOFF_LOG_THRESHOLD -> % Past 8 min, we log retries
  +        W1 when W1 >=  MaxBackOffLog -> % Past 8 min, we log retries
               log_retry_error(Params, HttpDb, Backoff2, "429 Retry"),
               throw({retry, NewHttpDb, Params});
           _ ->
  
positive.code:     {ibrowse_async_headers, ReqId, Code, Headers} ->
          case list_to_integer(Code) of
          429 ->
              backoff(Worker, HttpDb#httpdb{timeout = ?MAX_BACKOFF_WAIT},
                  Params);
          Ok when (Ok >= 200 andalso Ok < 300) ; (Ok >= 400 andalso Ok < 500) ->
              StreamDataFun = fun() ->
  
negative.code: 
  -define(replace(L, K, V), lists:keystore(K, 1, L, {K, V})).
  -define(MAX_WAIT, 5 * 60 * 1000).
  -define(STREAM_STATUS, ibrowse_stream_status).
  
  
  