zurl bypasses curl's dns resolution, so curl's timeout isn't used. essentially a cache structure is created per request containing the 1 domain needed. this is what is happening in the log line "Added xxx to DNS cache"
zurl uses the jdns library for resolving, which has an in-memory cache
the latest zurl now includes jdns debug output when running with verbose
so you can see when jdns actually attempts a resolve and when it expires cached items