anchor.diff:              % lager:info("Node is not connected ~p; trying again...", [Node]),
               case connect(Node) of
                   {ok, Pid} ->
  -                    dict:store(Name, Pid, Connections0);
  +                    dict:store(Name, {Pid, false}, Connections0);
                   _ ->
                       dict:store(Name, undefined, Connections0)
               end;
           %% Found in dict and connected.
  -        {ok, _Pid} ->
  -            Connections0;
  +        {ok, {Pid, _DisconnectTriggered}} ->
  +            dict:store(Name, {Pid, false}, Connections0);
           %% Not present; disconnected.
           error ->
               % lager:info("Node is not connected: ~p", [Node]),
               case connect(Node) of
                   {ok, Pid} ->
  -                    dict:store(Name, Pid, Connections0);
  +                    dict:store(Name, {Pid, false}, Connections0);
                   _ ->
                       dict:store(Name, undefined, Connections0)
               end
  
positive.code:     end;
  
  handle_message({neighbor, Peer, TheirTag, DisconnectId, _Sender},
                 #state{myself=Myself,
                        connections=Connections,
                        epoch=Epoch,
                        sent_message_map=SentMessageMap0}=State0) ->
      lager:info("Neighboring with ~p tagged ~p from random walk", [Peer, TheirTag]),
  
      State = case is_addable(DisconnectId, Peer, SentMessageMap0) of
  
negative.code: drop_random_element_from_active_view(#state{myself=Myself,
                                              active=Active0,
                                              reserved=Reserved,
                                              connections=Connections0,
                                              epoch=Epoch,
                                              sent_message_map=SentMessageMap0}=State0) ->
      ReservedPeers = dict:fold(fun(_K, V, Acc) -> [V | Acc] end,
  