Why i got a null item from the tlm port?

When i want to use a tlm port function in sequence by its parent sequencer which connect to monitor, i meet a trouble. It report a fatal, item from monitor is null! The code is below. Thanks for help!

  class noc_slave_monitor extends noc_port_monitor;
    uvm_blocking_peek_imp#(noc_slave_item, noc_slave_monitor) response_request_imp;
    protected noc_slave_item item_pipeline[$];
   .......
    task listen_trans(noc_item trans);
      noc_slave_item cur_item = noc_slave_item::type_id::create("cur_item");
      super.listen_trans(trans);
      item_pipeline.push_back(cur_item.clone());
    endtask
    virtual task peek(noc_slave_item item);
      wait(item_pipeline.size() > 0);
      item = item_pipeline.pop_front();
      `uvm_info(get_name(), $sformatf("seq got one it from monitor, %08h", item.data[0][15:0]), UVM_HIGH)
    endtask
  endclass
  class noc_slave_sequencer extends uvm_sequencer#(noc_slave_item);
    uvm_blocking_peek_port#(noc_slave_item) response_request_port;
    .......
    function void build_phase(uvm_phase phase);
      response_request_port = new("response_request_port", this);
    endfunction
  endclass
  class noc_slave_agent extends uvm_agent;
    noc_slave_monitor   mon;
    noc_slave_sequencer sqr;
    ......
    `uvm_component_utils(noc_slave_agent)
    ......
    function void connect_phase(uvm_phase phase); 
      super.connect_phase(phase); 
      ......
        sqr.response_request_port.connect(mon.response_request_imp);
      ......
    endfunction 
  endclass
  class noc_slave_base_sequence extends uvm_sequence;
    `uvm_declare_p_sequencer(noc_slave_sequencer)
   .......

    task body();
      noc_slave_item item;
      forever begin
        p_sequencer.response_request_port.peek(item);
        if(item == null) begin
          `uvm_fatal(get_name(), "item from monitor is null please check!")
        end
        `uvm_rand_send(item)
      end
    endtask
  endclass