Unlike a classical future type, unfortunately it allows one to discard the result, which means that all errors are ignored. It also doesn't guarantee ordering. For these reasons, I wouldn't recommend using unstructured Task.init
other than in a very limited set of use cases as a building block for higher-level primitives that work strictly within structured concurrency constraints. Also see this post for more details: DispatchQueue.asyncAfter(deadline:) in Structured Concurrency? - #8 by ole.