Dave, I get your point on trying to avoid SV events. Would you say uvm_event is ok to use?
wait_trigger(). has I guess the same issue as you described for the plain SV event.
wait_on() feels to me like ‘has the event happened somewhere in the past’ and feels like ok to use if that is the behavior you want?