I recommend that you keep away from trying to do anything with FIFOs in the sequencer.
What I am suggesting is that you implement a prioritised buffered transaction handling system in your driver:
task run_phase(uvm_phase phase);
if(current_transaction_priority < highest_priority) begin
while(transaction_stop == 0) begin
if(state = end_state) begin
put(item); // Returning response
This is unlikely to be straight-forward, so are you actually trying to address a realistic requirement?
It is usually very disruptive to abort a real protocol transfer. For instance with a bus protocol you allow the current transaction to complete before starting a higher priority transfer. If this seems to match the scenario, then you should look at sequence locking and priorities as per: