anchor.diff:      schedule_tree_refresh(),
   
       {noreply, State#state{out_links=OutLinks}};
  +
  +handle_info(distance, #state{pending=Pending,
  +                             membership=Membership,
  +                             connections=Connections0}=State) ->
  +    %% Establish any new connections.
  +    Connections = establish_connections(Pending,
  +                                        Membership,
  +                                        Connections0),
  +
  +    %% Record time.
  +    SourceTime = erlang:timestamp(),
  +
  +    %% Send distance requests.
  +    SourceNode = partisan_peer_service_manager:myself(),
  +
  +    lists:foreach(fun(Peer) ->
  +                do_send_message(Peer,
  +                                ?MEMBERSHIP_PROTOCOL_CHANNEL,
  +                                ?DEFAULT_PARTITION_KEY,
  +                                {ping, SourceNode, Peer, SourceTime},
  +                                Connections)
  +        end, Membership),
  +
  +    schedule_distance(),
  +
  +    {noreply, State#state{connections=Connections}};
   
   handle_info(periodic, #state{pending=Pending,
                                membership_strategy=MembershipStrategy,
  
positive.code: -type from() :: {pid(), atom()}.
  
  -record(state, {actor :: actor(),
                  vclock :: term(),
                  pending :: pending(),
                  membership :: list(),
  
negative.code:     MembershipStrategy = partisan_config:get(membership_strategy),
      {ok, Membership, MembershipStrategyState} = MembershipStrategy:init(Actor),
  
      DistanceMetrics = dict:new(),
  
      {ok, #state{actor=Actor,
                  pending=[],
                  vclock=VClock,
                  interposition_funs=dict:new(),
                  connections=Connections,
                  distance_metrics=DistanceMetrics,
                  sync_joins=[],
                  up_functions=dict:new(),
                  down_functions=dict:new(),
  