https://nsvasilev.com/posts/swift-concurrency-part-1/