Is receiving and forwarding coins to another contract possible in one transaction?

I’m sending coins to a contract’s payable function.
In that function I want to call a function on another contract and forward those coins.

is this possible?
So let’s say:

#[payable]
fn contractAFunctionA() {
   let amount = msg_amount();
   assert(amount > 0);
   
   let contractB = abi(...);
   contractB.deposit{
       coins: amount,
       asset_id: AssetId::base().bits(),
       gas: 1_000_000
   }
}

Hey @xpluscal, just to understand your question correctly, you want to receive funds in Contract A(through a payable function) and transfer the received assets to Contract B defined within the same payable function?