anchor.diff:      start_node_(dev1, Config),
       connect(node_(dev1)),
       ok.
  +
  +test_subscription(_Config) ->
  +    N = node_(dev1),
  +    subscribe(N, app_started),
  +    Debug0 = call_proxy(N, debug),
  +    ct:log("After subscription (~p, app_started): ~p", [self(), Debug0]),
  +    true = rpc:call(N, setup, patch_app, [sasl]),
  +    {ok, _} = rpc:call(N, setup, reload_app, [sasl]),
  +    ok = rpc:call(N, application, start, [sasl]),
  +    receive
  +        {app_started, #{info := sasl}} ->
  +            ct:log("got app_started: sasl", []),
  +            ok
  +    after 1000 ->
  +            Debug = call_proxy(N, debug),
  +            Since = events_since(N, app_started, 0),
  +            ct:log("Debug = ~p~n"
  +                   "Since = ~p", [Debug, Since]),
  +            ok
  +    end.
   
   mine_on_first(_Config) ->
       N = node_(dev1),
  
positive.code: await_aehttp(N) ->
      subscribe(N, app_started),
      Events = events_since(N, app_started, 0),
      case [true || #{info := aehttp} <- Events] of
          [] ->
              receive
  
negative.code:     process_flag(trap_exit, true),
      aec_test_event_handler:install(),
      error_logger:info_msg("starting test suite proxy~n", []),
      proxy_loop([{marker, app_started}], dict:new()).
  
  proxy_loop(Subs, Events) ->
      receive
          {From, Ref, debug} ->
              From ! {Ref, #{pid => self(),
                             subs => Subs,
                             events => Events}},
              proxy_loop(Subs, Events);
          {From, Ref, {subscribe, Event}} ->
              case lists:keymember(Event, 2, Subs) of
                  true ->
  