Why do we need to rescue so many different ones? I would expect `NoMethodError` to mean a programming error.