Continue execution of pre-bridge handler after call disconnected by receiver

I’m using the U option of Dial function to perform some operations after a call is answered, like Playback some files. I’m calling the Dial function after triggering a local extension using originate and calling Dial there. The first issue is that I get billsec 0 after calling CDR(billsec) after the Dial function exits(using the g option here too). At the b-leg though in the GoSub in U option, I get the correct billsec after playback is complete but in case if the receiver hangs up earlier this GoSub’s execution doesn’t complete, so I’m unable to return any value from here? I’ve messed around with ForkCDR and ResetCDR too so that I could receive billsec where the Dial function is called, but nothing happened using those.
Anything I can do to fix this behaviour?

Thanks