Can someone confirm that Create and Destroy are asynchronous actions? I did not expect that.
No, they are not. "Wait for previous action" in this case works similar to "Wait 0" - it delays the execution until the end of the tick. But I don't recommend using "Wait for previous action" like this, because in some rare cases it may actually wait for some other async action to finish.
The problem with Create and Destroy actions is that they are not performed instantly. Until the end of the event or end of the tick object counters may not be updated, and other events (or functions you call) may not be aware of the created or destroyed instances.
There are a few ways to work around it:
1. Add "Wait 0" after Create action. This will delay until the end of the tick, so use with caution as it may break the logic.
2. Pick newly created instance by UID or using "System Pick Last Created" condition.
3. Use the next top-level event to update the counters.