Concurrent DNS cache in Haskell