How to handle the provides_responses setting inside UVM RAL adapter for Posted and non-posted request

How to handle the provides_responses setting inside UVM RAL adapter for Posted and non-posted request?

Currently i am setting provides_responses =1 for Read and =0 for Write. I don’t want to change the setting depending on command type
virtual function uvm_sequence_item reg2bus(const ref uvm_reg_bus_op rw);
uvm_reg_item item = get_item();
if ($cast(i_AgtSeqr,item.extension)) begin
`uvm_info(“reg2bus”,$sformatf(“casting extension to AgtSeqr successful with address %d”,req_tr.address), UVM_MEDIUM);
req_tr.setCfg (i_AgtSeqr.getCfg());
end

      **this.provides_responses     = (rw.kind == UVM_WRITE) ? 0 : 1;**
      req_tr.address           = rw.addr;

Posted request don’t need the response from sequencer so ideally provides_response = 0
Non-posted request needs get_response from sequencer so setting provides_responses = 1
But this making my adapter code more complex and making bus2reg more complex to handle the Posted request handle and non-posted response handle depending on rw.kind type
virtual function void bus2reg(uvm_sequence_item bus_item, ref uvm_reg_bus_op rw);
ReqTxn bus_tr;
RespTgtTxn rsp_tr;