OKAY!! so, I am not totally crazy!
I had two versions of C3 open, and happened to open your sample in R164.3 (the latest stable). It does indeed work the way you said,
but I just opened it in R168, and it does not work - works the way I said. (adding the wait 0 then makes it do what you want).
so, I went back to your original file (problem.c3p), opened it in the stable version and divided your function into two and it started working, but it also does not in R168. (haven't tried other versions). So, we have uncovered a bug (or at least a change) in C3...
do you want to file a bug report with your last sample? it works one way in R164.3 and another way in R168.
the way it works (or doesn't) in R168 is the historical way I understand picking. the way it works in R164.3 is an improvement - although I find it strange that it works with consecutive function calls, but not when one function calls the second.
EDIT: just checked other versions - it worked up until R166, stopped working at R167.