This is mostly equivalent to the Haskell implementation, with the primary difference that the Lisp DNS library does not support caching yet.