anchor.diff:  %% @doc End the current test plan and output test results.
   %% @todo This should probably be done in the test_server process.
   end_tests() ->
  -    timer:sleep(100),
  +    Ref = make_ref(),
       case whereis(etap_server) of
  -        undefined -> self() ! true;
  -        _ -> etap_server ! {self(), state}
  +        undefined -> self() ! {Ref, true};
  +        _ -> etap_server ! {self(), state, Ref}
       end,
  -    State = receive X -> X end,
  +    State = receive {Ref, X} -> X end,
       if
  -        State#test_state.planned == -1 ->
  +        is_record(State, test_state) andalso State#test_state.planned == -1 ->
               io:format("1..~p~n", [State#test_state.count]);
           true ->
               ok
  
positive.code:         {From, count} ->
              From ! State#test_state.count,
              State;
          {From, is_skip} ->
              From ! State#test_state.skip,
              State;
          done ->
              exit(normal)
  
negative.code: %% @private
  %% @doc Process the result of a test and send it to the etap_server process.
  mk_tap(Result, Desc) ->
      etap_server ! {self(), is_skip, Ref = make_ref()} ,
      receive {Ref, IsSkip} -> ok end,
      case [IsSkip, Result] of
          [_, true] ->
              etap_server ! {self(), pass, Desc},
  