Get_item_done results error when using also get_response

hi,
i am using the code below trying to avoid blocking the sequencer, using “item_done” just tight after the “get_next_item”.
my sequence using get_response to compare the actual_data to expected data.
on the time i’m doing the item_done - i get an comparison error since the reurned item got a random data and not the actual data is should have at the end.( when (put,rsp,xact_id) is done).
also , when the code reaches : get_response(rsp, req.get_transaction_id()) i got the following message : Dropping response for sequence %0d, sequence not found. Probable cause: sequence exited or has been killed

how can i solve it?
thx ze’ev

the code :

my code is :
task run();
forever begin
seq_item_port.get_next_item(req);
send_to_dut(req, rsp);
seq_item_port.item_done(rsp);
end
endtask : run

task send_to_dut(input packet reqp, output packet rspp);
rspp = packet::type_id::create(“rspp”,this);
rspp.set_id_info(reqp);

Then in the sequence, you can get the response based on the transaction id:

virtual task body();
`uvm_do_with(req, {req.data_in == 2’b00;})
get_response(rsp, req.get_transaction_id());