Missing sequence when using response handler

In reply to cgales:

i try to keep the sequence alive , but now i can’t get requests back to back. the next request is received only after the former request got its response.
i need a way to get back to back requests from the sequence.

the sequence is :

// send xaction

    finish_item(this_transfer);
    if (this_transfer.NeedRsp)
    begin
        expected_responses++;
        $display("start wait for expected_responses at %t",$time());
        wait(expected_responses == 0);
        $display("finish wait for expected_responses at %t",$time());
    end
   endtask // body

   function void    response_handler(ovm_sequence_item response) ;
       cmi_src_cmd req;
       assert($cast(req, response)) else
            ovm_report_error(get_full_name()," received completion with unmatched type");
       $display("in sequence: got xact_id of response = %d",req.xact_id);
       // verify data
       if(req.CompareCompletion)
            for (int i = 0 ; i < 16 ; i++) 
                if (req.ExpectedData[i] != req.WData[i])
                    ovm_report_error(get_full_name(), $psprintf("data mismatch! index = %1d : expected = %h actual = %h @ TID = %h, SRC = %h , DST = %h . CHID = %d, Adress = %h",i,
                    req.ExpectedData[i] ,req.WData[i],req.TID,req.SrcID,req.DstID,req.ChId,req.Addr));
                else
                    $display("cmp: %d == %d",req.ExpectedData[i],req.WData[i]);
       expected_responses--;
   endfunction