How to implement burn-redeem where redeem token is 1 of multiple options?

I’m looking to have this interaction:

User burns 1 token (1155), receives 1 token (1155) from 4 possible options (randomized)

Thinking this could be possible, potentially using an onBurn callback?

interface IERC1155CreatorExtensionBurnable is IERC165 {
     * @dev callback handler for burn events
    function onBurn(address owner, uint256[] calldata tokenIds, uint256[] calldata amounts) external;

Would love to know if I’m headed down the right path and if you have any tips, thanks!

Hey doing something similar. Did you ever find out if this works? I’m trying this myself - it appears that the onBurn hook is getting called, but the mintExtensionExisting function that I have in the onBurn callback isn’t getting called.

Update: You can’t do this because of reentrancy to original core contract:(