A practical guide to async/await in Swift using DispatchQueue as your bridge from UIKit to structured concurrency