+1 on the async init. I have this method defined in at least three of my projects. It needs the usual isolation parameter as long as SE-0461 is not accepted.
public init(
isolation: isolated (any Actor)? = #isolation,
catching body: () async throws(Failure) -> Success
) async {