anchor.diff:  
       %% Every time a node goes down we will get a {nodedown, Node} message
       Fun = fun(Node) -> Me ! {nodedown, Node} end,
  -    Mod = partisan_peer_service:manager(),
  -    ok = Mod:on_down('_', Fun),
  -
  -    {ok, #{}}.
  -
  -%% @private
  -handle_call({monitor, PidAsList}, {PartisanRemote, _PartisanRemoteRef}, State0) ->
  -    %% We monitor the process
  +    ok = partisan_peer_service:on_down('_', Fun),
  +
  +    {ok, #state{}}.
  +
  +%% @private
  +handle_call({monitor, PidAsList}, {RemotePid, _RemoteRef}, State0) ->
  +    {partisan_remote_reference, Nodename, _} = RemotePid,
       Pid = list_to_pid(PidAsList),
  -    Ref = erlang:monitor(process, Pid),
  -
  -    PartisanRef = partisan_util:ref(Ref),
  -    State1 = maps:put(Ref, {PartisanRef, PartisanRemote}, State0),
  -    State2 = maps:put(PartisanRef, Ref, State1),
  -
  -    %% We store a mapping from remote Node name so that we can cleanup monitors
  -    %% when the PartisanRemote node goes down
  -    {partisan_remote_reference, Name, _} = PartisanRemote,
  -    StateFinal = append_ref_by_node(Name, PartisanRef, State2),
  -
  -    {reply, PartisanRef, StateFinal};
  -
  -handle_call({demonitor, PartisanRef}, _From, State) ->
  -    StateFinal = do_demonitor(PartisanRef, State),
  -    {reply, true, StateFinal};
  -
  -handle_call({monitor_node, Node, true}, {PartisanRemote, _} = From, State0) ->
  -    %% The caller is always a local process
  -    {partisan_remote_reference, MyNode,
  -         {partisan_process_reference, PidAsList}} = PartisanRemote,
  -
  -    case MyNode == Node of
  +
  +    %% We monitor the process on behalf of the remote caller
  +    MRef = erlang:monitor(process, Pid),
  +
  +    State = add_process_monitor(Nodename, MRef, {Pid, RemotePid}, State0),
  +
  +    %% We reply the encoded monitor reference
  +    Reply = partisan_util:ref(MRef),
  +
  +    {reply, Reply, State};
  +
  +handle_call({demonitor, PartisanRef}, _From, State0) ->
  +    State = do_demonitor(PartisanRef, State0),
  +    {reply, true, State};
  +
  +handle_call({monitor_node, Node}, {Pid, _}, State0) ->
  +    %% Monitor node
  +    case partisan_peer_service:member(Node) of
           true ->
  -            {reply, false, State0};
  +            State = add_node_monitor(Node, Pid, State0),
  +            {reply, true, State};
           false ->
  -            Pid = list_to_pid(PidAsList),
  -            Mod = partisan_peer_service:manager(),
  -
  -            case Mod:member(Node) of
  -                true ->
  -                    StateFinal = append_pid_by_node(Node, Pid, State0),
  -                    {reply, true, StateFinal};
  -                false ->
  -                    ok = partisan_gen_server:reply(From, true),
  -                    Pid ! {nodedown, Node},
  -                    {noreply, State0}
  -            end
  +            %% We reply true but we do not record the request as we are
  +            %% immediatly sending a nodedown signal
  +            ok = partisan_gen_server:reply(Pid, true),
  +            ok = partisan_peer_service:forward_message(Pid, {nodedown, Node}),
  +            {noreply, State0}
       end;
   
  -handle_call({monitor_node, Node, false}, From, State) ->
  -    StateFinal = remove_pid_by_node(Node, From, State),
  -    {reply, true, StateFinal};
  +handle_call({demonitor_node, Node}, {Pid, _}, State0) ->
  +    State = remove_node_monitor(Node, Pid, State0),
  +    {reply, true, State};
   
   handle_call(_Msg, _From, State) ->
       {reply, ok, State}.
  
positive.code: -spec demonitor_node(node() | node_spec()) -> true.
  
  demonitor_node(Node) when is_atom(Node) ->
      monitor_node(Node, false).
  
  
  %% -----------------------------------------------------------------------------
  
negative.code: -spec monitor_node(node() | node_spec()) -> true.
  
  monitor_node(Node) when is_atom(Node) ->
      case Node == partisan_peer_service:mynode() of
          true ->
              true;
          false ->
              partisan_gen_server:call(?MODULE, {monitor_node, Node})
      end.
  
  
  %% -----------------------------------------------------------------------------
  