_get_or_search, which is used in the implementation of several other methods, will only delegate to ->_get for arguments that are both defined and match the regular expression /^[A-Za-z-:]+$/.
There are valid module, distribution, and release names that aren't matched by the above regex. There's also invalid module names that are matched by it.
It would seem appropriate to me to always dispatch to ->_get if the argument is both not a reference and defined at the same time.