Standard way in FA2: invert the control
The standard way in FA2 is to reverse the logic.
From (what you expected to do):
-
Alice calls
transferonFA2. -
Contract
Creacts to the receive.
To (what is recommended to do):
-
Alice calls
update_operatorsonFA2to addCas operator. -
Alice calls
Cto start the logic. -
Creacts to call by callingtransferonFA2from Alice’s token to itself. -
Alice calls
update_operatorsonFA2to removeCas operator.
Step 1, 2 and 4 starts a transaction. Those three transactions can be batched in one big batch-transaction.

