How to pause a sequence based on event

In reply to peterjin:

What you are trying to do is useless. The sequencer does not actively send a seq_item to the driver. This happens only when you are using the uvm_push_sequencer.
In your case the driver is retrieving a seq_item from the sequencer. The sequencer is only providing the seq_item. The consequence is all timing related activity has to be in the driver. Stopp your driver and it will not retrieve a new seq_item. Very simple to implement.