Question on item_done(input T2 t = null) API of get_next_item, item done sequencer driver interaction

Hello,
I have a question on item_done API as described below :
according to UVM reference manual 1.1, the description of item_done function is -


virtual function void item_done(input T2 t = null)

Indicates that the request is completed to the sequencer. Any
uvm_sequence_base::wait_for_item_done calls made by a sequence for this item will
return.
The current item is removed from the sequencer fifo.
If a response item is provided, then it will be sent back to the requesting sequence. The
response item must have it’s sequence ID and transaction ID set correctly, using the
uvm_sequence_item::set_id_info method:

Referring to the underlined part of description, if a response item is provided, it is sent to the requesting sequence. How is this response item sent to the requesting sequence? It is sent through the response_queue? In that case, how is it retrieved by sequence which sends the request? Does the sequence call finish_item with response as parameter? Can someone explain this?
(according to sequencer-driver API documentation, for sending response back, driver uses get and put methods while sequence uses start_item, finish_item and get_response functions/tasks.).
So if we need to use item_done to pass the response back to sequence, how is it achieved
thanks,
-sunil puranik