EDIT: just saw dop2000's version - I like the way he did it better than mine! :)
OhhBaby in your first post you asked why it isn't working. I tried your file, and had it log when it created each item (the tickcount at the time it created a sprite).
I would argue that it is doing exactly what you are asking it to do.
in the first function it waits half a second to create each top sprite - and they are created at 30 ticks, 60, 90, 120, and 150 ticks.
after each top sprite is created you call the bottom function and have it wait 1 second before creating each bottom sprite.
the bottom sprites for the first top sprite are created at 90 and 150 ticks.
the bottom sprites for the second top sprite are created at 120 and 180 ticks
the bottom sprites for the third top sprite are created at 150 and 210 ticks
the bottom sprites for the fourth top sprite are created at 180 and 240 ticks
the bottom sprites for the fifth top sprite are created at 210 and 270 ticks
so, maybe that isn't what you had in mind, but it is waiting the amount of time you ask it to. You end up with a couple sprites created at 90 and 120 ticks, 3 at 150 ticks, 2 at 180 ticks, etc.
I am guessing you wanted it to wait until both bottom sprites were created before it went on to create the second top sprite. You added the "wait for previous actions to complete" after calling the bottom function but that would only affect actions added immediately after that point - it doesn't prevent the loop above it from continuing to run.
I made a sample how I would probably do it... The CreateBottom function hasn't changed, but the CreateTop had to be done differently.
https://www.rieperts.com/games/forum/asyncLoop.c3p