anchor.diff:              end
           end,
       {ok, Monitor} = monitor(Addr),
  -    case send(Addr, fwd, self(), ResponseFun,
  +    case send(Addr, fwd, NotifyPid, NotifyData, ResponseFun,
                 kind_to_module(Kind), Cmd, CmdArgs) of
           ok -> {ok, Monitor};
           _  -> {error, Monitor}
  
positive.code:         {_,  Monitor} -> {NumOks, [Monitor | Monitors]}
      end.
  
  await_ok(N) -> await_ok(N, 0).
  await_ok(N, Acc) when N > 0 ->
      % TODO: Decrementing N due to a DOWN might be incorrect
      % during edge/race conditions.
      receive
          {ok, _}    -> await_ok(N - 1, Acc + 1);
          {ok, _, _} -> await_ok(N - 1, Acc + 1);
          {'DOWN', _MonitorRef, _, _, _}  -> await_ok(N - 1, Acc);
          Unexpected -> ?debugVal(Unexpected),
                        exit({error, Unexpected})
      end;
  await_ok(_, Acc) -> Acc.
  
  %% gen_server implementation.
  
  
negative.code: 
  loop(Addr, Sock) ->
      receive
          {fwd, NotifyPid, NotifyData, ResponseFun,
                CmdModule, Cmd, CmdArgs} ->
              RV = apply(CmdModule, cmd, [Cmd, Sock, ResponseFun, CmdArgs]),
              notify(NotifyPid, NotifyData, RV),
              case RV of
                  {ok, _}    -> loop(Addr, Sock);
                  {ok, _, _} -> loop(Addr, Sock);
  