Check out `done()`; it's referenced there. The purpose is ease of use. The problem with panics is that applications should have recovery code if they don't want to crash upon a killed task. If you are running a web server, for instance, you may already have that recovery code in place. Otherwise, we provide a feature to stop the panic within the package. The panic *is* required in order to cancel. If you don't panic, then cancellation has no effect.