anchor.diff:                    last_failure_time = Now};
   track_success(no_success_change, Backend) ->
     Backend.
  -
  -
  --spec(choose_from_backends(ReachableBackends :: [#backend{}], NotReachableBackends :: [#backend{}]) ->
  -  {Backend :: #backend{}, ReachableBackends1 :: [#backend{}], NotReachableBackends1 :: [#backend{}]}).
  -choose_from_backends(B1, B2) when length(B1) > 0 ->
  -  {B1Prime, Backend} = pop_item_from_list(B1),
  -  {Backend, B1Prime, B2};
  -choose_from_backends(B1, B2) when length(B2) > 0 ->
  -  {B2Prime, Backend} = pop_item_from_list(B2),
  -  {Backend, B1, B2Prime}.
   
   -spec(pop_item_from_list(List :: [term()]) -> {ListPrime :: [term()], Item :: term()}).
   pop_item_from_list(List) ->
  
positive.code: %% How many lookups we do to populate the backends list in Minuteman
  -define(LOOKUP_LIMIT, 20).
  
  %% The threshold of backends before we use the probabilistic algorithm
  -define(BACKEND_LIMIT, 10).
  
  
  %%%===================================================================
  %%% API
  
negative.code: pick_backend([]) ->
    {error, no_backends_available};
  
  pick_backend(BackendAddrs) ->
    minuteman_metrics:update([probabilistic_backend_picker], 1, spiral),
    Now = erlang:monotonic_time(),
    ReachabilityCache = reachability_cache(),
    Choice = probabilistic_backend_chooser(Now, ReachabilityCache, BackendAddrs, [], [], []),
    {ok, Choice}.
  
  %%--------------------------------------------------------------------
  %% @doc
  