rescue handles StandardError by default, not Exception