Hi Laurie,
In addition to the article Clay mentions above, here is an example of an in-queue flow that does what you're asking above:
Notice how the task logic uses the Hold Music action configured to play hold music for 30 seconds followed by a Play Audio action where you would play your first promo, then followed by another Hold Music for 30 seconds, then Play Audio for next promo, etc. etc.
When execution in an in-queue flow hits the end of the task execution will re-start at the beginning of that task.
One nice thing to note in this solution is that lets say your hold music prompt is 5 minutes long. In the example the first 30 seconds of hold music will be played by the Hold Music action with ID 11. Assuming the time it takes 45 seconds to play the Promotion 1 audio on the Play Audio action with ID 12, when the Hold Music on action 13 starts up, it will pick up at 1 minute 15 seconds in to the hold music audio. The good news there is it's not restarting at the beginning of the hold music each time a Hold Music action executes.
In the screen shot I basically hard coded three Hold Music / Play Audio pairs in the in-queue task example but there are other ways you can use the fact that the task is a repeating task in an in-queue flow. For example, you could have a counter in a Flow level variable that increments each time the task starts and then within a Play Audio action dynamically determine what to audio to play based off of that counter. :)
Thanks!
Jim