Every time you panic from a package you're probably crossing package boundaries. That could be a bad idea if you panic while not in a consistent state, but I don't see how that could be a problem otherwise. Furthermore, there could be runtime panics thrown deep inside the call stack that may be crossing the full application. Recovering the panic is a helper feature, that is indeed disabled by default precisely to avoid nasty effects if you're unaware of that. On the other hand, the full purpose of cancellation has no other choice but to use panics.

On the `DoNotCancel` or `NotCancellable`... neither of those names are accurate, since the option is not forbidding the routine to be cancelled; it's only specifying whether pm's own panic will be recovered upon `Done()` or not. Does `RecoverCancelPanic` sound better? I don't know...