Delays between start_item() and finish_item()

The comments for uvm_base_sequence::finish_item() specify that no time can be consumed between start_item() and finish_item():


  // Function: finish_item
  //
  // finish_item, together with start_item together will initiate operation of 
  // a sequence_item.  Finish_item must be called
  // after start_item with no delays or delta-cycles.  Randomization, or other
  // functions may be called between the start_item and finish_item calls.
  //

I’ve seen user code that (accidentally) did have delays between start_item() and finish_item() which ran without errors. Does anyone know if this really is a requirement and not just a good idea, and if so why?

In reply to landrewparker:
It is a requirement and if not followed will break the behavior of things that depend on it. For example try_next_item() expects not to block even though it is declared as a task.