scalaz/scalaz — pull request #608 by jessitron (2013-12-17 02:56:56+00:00)
Title: Task: Catch Throwable, not just Exception

Task.Try catches Exception, but not Throwable.
The consequence is that when trampolining, if a Throwable pops up then the thread dies and the program never terminates.

It's a good rule of thumb to never catch Throwable, but this is an exception. If the intention of "Don't catch Throwable" is "Let the program die", then it is more useful to wrap the Throwable, give it back to the other thread, and throw it again there.
As it is, the contents of the Throwable are lost in the aether of the dying thread, never to be diagnosed.

Paul says: it should catch all Throwables, that is a bug. It's up to the consumer of `Task` to rethrow any non-Exception Throwables if that's the behavior they want.

from discussion:
https://groups.google.com/forum/#!topic/scalaz/D3ZyY1Xu_PQ