I'm not fully convinced here. We may have many reasons why we can't get version and exception allows us to tell what exactly went wrong (missing lib or network error). I'd like to consider throwing errors on network problems, but we may do actually 4 kinds of attempts (2 sources * 2 possible methods) and it doesn't seem that straightforward. Anyway if all of them are failing it's definitely abnormal.