Regarding sequncer's has_do_available

Hi all,
I am using UVM 1.1 version. I have a sequencer and driver. The following snippet is present in the driver.

 seq_item_port.has_do_available();        //This is Returning a value of 1
 seq_item_port.peek(req);
 seq_item_port.has_do_available();        //This is Returning a value of 0

 As per my knowledge, "peek" function gets a copy of the next item present in sequencer queue and won't pop out the entry, but when I am using has_do_available() function for the second time its retuning a "zero" which is contrary to my expectation.

Please explain the correctness of my concept.

In reply to santosh_kumar_vangala:

seq_item_port.peek() apparently returns the current request item if one is in the sequencer fifo. So now it makes sense why second call to has_do_available() is returning 0.
Reference : uvm_sqr_if_base #(REQ,RSP)