        bool Disposed;
        CacheDictionary<DnsQuestion, DnsCacheEntry> Cache;
        UdpClient[] Upstreams;
        HostsFile HostsFile;

        public Task<DnsResourceRecord> this[DnsQuestion question]
            => Cache[question].ContinueWith(t => t.Result.ToResourceRecord(question));

        void ResolveHost(DnsQuestion question) {
            IPAddress address;