Rescue ::StandardError instead of ::Exception

Rescuing `::Exception` in libraries is problematic, for several reasons.
In this instance, it prevents a `SystemExit` from killing the interpreter
correctly.

The exception classes which are under `Exception` and not `StandardError`
are generally those which it makes no sense to attempt to handle in user
code anyway, so catching them (especially in a background thread, where
it's normal to expect a `Thread.abort_on_exception` setting to be
relevant) is misleading.