https://djbbmusic.com/concurrency-asynchronous-programming-in-swift/