anchor.diff:  
   % @doc Send a message to the peer and return immediately.
   send(Tag,Msg = [_|_]) ->
  -    Ref = ?EJMSGREF(self(),erlang:make_ref()),
  -    gen_server:call(?SRVNAME, {send, Ref, Tag, Msg}),
  +    gen_server:call(?SRVNAME, {send, get_ref(), Tag, Msg}),
       ok.
   
   % @doc Send a message to the peer and wait for an answer.
  
positive.code:     {noreply,S};
  % ej_srv messages
  handle_info({From,_Ref,{?TAG_OK,[?EJMSGPART(call,handshake)]}},S) ->
      % TODO check Ref
      log:debug(self(), "info handshake from: ~p", [From]),
      {noreply, S#jsrv{peer=From}};
  handle_info({From,_Ref,{?TAG_OK,[?EJMSGPART(call,bye)]}},S) ->
      % TODO check Ref
      case S#jsrv.stopping of
          false -> 
              log:warn(self(), "ignore 'bye' while not in stopping state: ~p", [From]),
              {noreply,S};
          true  ->
              % TODO only allow from peer and self()
              log:info(self(), "'bye' triggered: ~p", [From]),
              {stop, normal, S}
      end;
  handle_info(Msg={'EXIT', Pid, Reason},S) ->
      log:warn(self(), "EXIT from ~w with reason: ~w", [Pid,Reason]),
      Peer =  S#jsrv.peer,
      if 
          is_port(Pid) -> handshake(S#jsrv.bindir);
          true         -> 
              case Msg of
                  {'EXIT', Peer, noconnection} ->
                      handshake(S#jsrv.bindir);
                  Any ->
                      log:debug(self(), "don't know how to handle exit: ~w", [Any])
              end
      end,
      {noreply, S}; 
  handle_info({'STOP'},S) ->
      case S#jsrv.worker of
          yes -> 
  
negative.code:                     true                      -> S#jsrv.bindir
                  end,
              Peer = handshake(Bindir),
              S2 = S#jsrv{peer=Peer},
              Workers =
              lists:foldl(fun(_I,Acc) -> 
  