Uvm put_response/put vs rsp_port.write

When driver needs to send response to sequencer for non-blocking communication between them, driver can use seq_item_port.put_response(rsp) or
seq_item_port.put(rsp) or
rsp_port.write(rsp)

Under what case, one would choose rsp_port over the put/put_response port? other than having to make the rsp_port connection, I do not see difference in the behavior that would make choosing one over other preferrable. Can someone explain?

In reply to kuki2002:

There is no difference from the sequence point of view (one who is waiting for the responses).
All three approaches put the response back to sequence.
The additional advantage of rsp_port is any port from the environment can be connected, can be from monitor or from another component.