I've written a version of a queue which can run async closures with n amount of parallelization here: playgrounds/TaskQueue.swift at main · gshahbazian/playgrounds · GitHub
Initializing with TaskQueue(concurrency: 1) provides FIFO execution.
Would love to get some feedback on this implementation : )