Example code - result of is_grabbed() and current_grabber() after call to grab()

The examples on this page have:

  // Grab call which blocks until grab has been granted
  m_sequencer.grab(this);
 
  if(m_sequencer.is_grabbed()) begin
    if(m_sequencer.current_grabber() != this) begin
      uvm_report_info("grab_seq", "Grab sequence waiting for current grab or lock to complete");
    end 
  end

If grab() blocks until the grab has been granted, then is it ever possible for the uvm_report_info() call to be executed? Because presumably if grab() has returned then this is always the current_grabber?