There is a scenario that came to my mind where is does not work and it is related to Time elapsed.

The above screenshot shows a sequencer that measures ten times the mouse cursor position (based on the Mouse Logger example).
A CustomFunction module in a second branch is then used to handover data and process it.
If you select “Time elapsed [s]” as variable it does not work, because it would return data from the last branch where the Time module is in. As the Time module is in every branch (as the invisible root item), you can only receive the Time value that was measured in the second branch, when the single iteration of the CustomFunction module was performed. This is a special case that is related to all modules that are at the top of sequencer and belong to both branches.
To explain this a bit more, I created another example:

This would also lead to the repetitive measurement of the Mouse cursor in the first branch, but because the Logger module “Mouse” is now at the top, it also part of the second branch. If you would handover the variable “Mouse x [px]” to the CustomFunction, you would not get the data of the first branch, but the single measurement point where the Mouse module was activated in the second branch.
To resolve or work around the problem in the first case with the Time module, you can add a Calc module to first branch that simply returns the Time elapsed variable. This way the value of Time elapsed is stored in a new variable created by the Calc module which then can be handedover with the full history of the first branch to the CustomFunction module.
I hope this helps a bit further to understand how handing over to CustomFunction with multiple branches works.
The basic use case would be that people for example measure a solar cell IV curve and in a second branch they can access entire IV curve and do a calculation like open-circuit voltage, short-circuit current, maximum power point or fill factor.

If you put everything into a Loop module, you can evaluate the IV curve at each repetition of the Loop module, because CustomFunction always can receive all the data since the last call of the CustomFunction module. This way it receives the last IV curve.
Best, Axel