Broadly, the pattern of wrapping suspend and flow APIs in functions that take lambdas so they can be called from Swift is a good one. Whether you want to use that exact implementation vs a more complex one (for example to add error handling, or structured concurrency support) is up to you and your project's needs.