use LWP::UserAgent::Determined for better error handling