Does this UVM pipelined driver implentation look ok?

Hi I came across a very clean way of implementing a pipelined driver in this forum. Its an old post but no one chimed in to comment on the code or its feasibility. dave_59, chr_sue or anyone else care to comment on the post below?

UVM pipelined driver implementation - UVM - Verification Academy

In reply to yourcheers:

Dear Forum,
Are there any drawbacks with this kind of UVM pipelined driver implementation, compared to the one in cookbook where do_pipelined_transfer() is called twice.
In this approach, spawning a thread to drive data in a forever loop and the addr phase is executed as and when there is a sequence item from sequence, and sends the same req to data-phase forever loop to drive. Major difference is using the mailbox to send the req information to other thread, the cookbook implementation uses semaphore.
Pipelined Protocols | UVM Cookbook

class ahb_pipelined_driver extends uvm_driver#(ahb_seq_item);
`uvm_componenet_utils(ahb_pipelined_driver);
mailbox      save_txn;
task run_phase();
fork
data_phase();
join_none
forever begin
seq_item_port.get_next_item(req);
drive_addr_phase(req);
seq_item_port.item_done();
end
endtask
task drive_addr_phase();
while(ahb_id.HREADY!=0)begin
@(posedge ahb_id.HCLK);
end
ahb_if.HTRAN <= NON-SEQ;
ahb_if.HBURST <= ahb_if.HBURST;
@(posedge ahb_id.HCLK);
save_txn.put(req);
ahb_if.HTRAN <= IDLE;
ahb_if.HBURST <= IDLE;        
endtask
task data_phase();
forever begin
save_txn.get(req);
if(req.HWRITE)begin
//Drive WDATA ... 
end
else begin
//Capture RDATA ...
end
seq_item_port.put_response(req);
end
endtask
endclass

In reply to rlraj_2020:

Hi I came across a very clean way of implementing a pipelined driver in this forum. Its an old post but no one chimed in to comment on the code or its feasibility. dave_59, chr_sue or anyone else care to comment on the post below?
UVM pipelined driver implementation - UVM - Verification Academy
In reply to yourcheers:

This driver is also working good as Pipelined Protocols | UVM Cookbook.

But it also can’t avoid the pipelined Driver problem in RAL access.