Parent
#302
What to build
Add tests to AsyncUnsupervisedSpec.scala (or extend AsyncSpec.scala) that verify fiber.join() and fiber.value behavior inside Async.unsupervised.
fiber.join() is the only way to observe a fiber's exception in an unsupervised scope. Its contract must hold: rethrows on failure, returns normally on success, returns silently on cancellation.
No implementation changes — tests only, building on top of the core scope introduced in #303.
Acceptance criteria
Blocked by
Parent
#302
What to build
Add tests to
AsyncUnsupervisedSpec.scala(or extendAsyncSpec.scala) that verifyfiber.join()andfiber.valuebehavior insideAsync.unsupervised.fiber.join()is the only way to observe a fiber's exception in an unsupervised scope. Its contract must hold: rethrows on failure, returns normally on success, returns silently on cancellation.No implementation changes — tests only, building on top of the core scope introduced in #303.
Acceptance criteria
fiber.join()inside the block; assert the exception propagates to the caller ofAsync.unsupervisedfiber.join()thenfiber.value(or usefiber.valuedirectly); assert the correct value is returnedfiber.join(); assert no exception is raised (consistent with existing supervisedFiber.join()contract)Async.run { Async.unsupervised { ... } }pattern established inAsyncSpec.scalaBlocked by
Async.unsupervisedscope — core lifecycle #303