Pitch #4: ConcurrentValue and @concurrent closures Evolution Pitches

Giving more thought to this, I think this is also a problem for async let, runDetached, and task groups from structured concurrency. An error thrown crosses the bridge between two executors in those cases. Of course, forcing Error to conform to ConcurrentValue would work there too.

And the return type should be constrained to ConcurrentValue too for the cases above. runDetached could for instance add a generic constraint to ensure the returned value conforms to ConcurrentValue. (That wasn't necessary when @concurrent implied ConcurrentValue for parameter and return types, but now it will be.)