anchor.diff:          {_,  Monitor} -> {NumOks, [Monitor | Monitors]}
       end.
   
  -await_ok(N) -> await_ok(N, 0).
  -await_ok(N, Acc) when N > 0 ->
  +await_ok(N) -> await_ok(undefined, N, 0).
  +await_ok(NotifyData, 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);
  +        {NotifyData, {ok, _}}    -> await_ok(NotifyData, N - 1, Acc + 1);
  +        {NotifyData, {ok, _, _}} -> await_ok(NotifyData, N - 1, Acc + 1);
  +        {'DOWN', _MonitorRef, _, _, _}  -> await_ok(NotifyData, N - 1, Acc);
           Unexpected -> ?debugVal(Unexpected),
                         exit({error, Unexpected})
       end;
  -await_ok(_, Acc) -> Acc.
  +await_ok(_, _, Acc) -> Acc.
   
   %% gen_server implementation.
   
  
positive.code: 
  loop(Addr, Sock) ->
      receive
          {fwd, NotifyPid, ResponseFun,
                CmdModule, Cmd, CmdArgs} ->
              RV = apply(CmdModule, cmd, [Cmd, Sock, ResponseFun, CmdArgs]),
              notify(NotifyPid, RV),
              case RV of
                  {ok, _}    -> loop(Addr, Sock);
                  {ok, _, _} -> loop(Addr, Sock);
  
negative.code:             end
          end,
      {ok, Monitor} = monitor(Addr),
      case send(Addr, fwd, NotifyPid, NotifyData, ResponseFun,
                kind_to_module(Kind), Cmd, CmdArgs) of
          ok -> {ok, Monitor};
          _  -> {error, Monitor}
  