Since `block` in this case immediately dispatches to the main thread, it might feel better if that async call happened here, don't you think? That way it'll be more obvious why the data needs to be copied, and the flow may be more clear in general.

We'd of course need to do the same with the `block` call below.

Or is there a reason not to do it this way here? It's a design decision I still struggle with...sometimes things feel inside-out when using blocks and threads across API boundaries.