twilio / twilio-ruby

A Ruby gem for communicating with the Twilio API and generating TwiML
MIT License
1.35k stars 463 forks source link

Distinguish between internal errors and network errors. #689

Open hovissimo opened 8 months ago

hovissimo commented 8 months ago

Issue Summary

Distinguish between internal errors and network errors.

I want to retry calls to Twilio on network errors, but not on internal (actual) errors. The implementation isn't very consistent about what a TwilioError is, and when it should be raised.

https://github.com/search?q=repo%3Atwilio%2Ftwilio-ruby%20Twilio%3A%3AREST%3A%3ATwilioError&type=code image

Can we please either NOT re-raise Faraday::Error and just let it bubble up, or re-raise these errors as a new Twilio::REST::NetworkError so that consumers can better distinguish between network errors and non-network errors?

Steps to Reproduce

N/A

Code Snippet

N/A

Exception/Log

Twilio::REST::TwilioError:  Failed to open TCP connection to conversations.twilio.com:443 (getaddrinfo: Temporary failure in name resolution)

Technical details: