             return deferred
         }
 
+        // Make a copy on the main thread
+        let whitelistRegex = ContentBlockerHelper.whitelistedDomains.domainRegex
+
         DispatchQueue.global().async {
             let enabledLists = BlocklistName.forStrictMode(isOn: isStrictMode)
-            deferred.fill(blockLists.urlIsInList(url).flatMap { return enabledLists.contains($0) ? $0 : nil })
+            deferred.fill(blockLists.urlIsInList(url, whitelistedDomains: whitelistRegex).flatMap { return enabledLists.contains($0) ? $0 : nil })
         }
         return deferred
     }

                }

                // Check the whitelist.
                let whitelist = ContentBlockerHelper.whitelistedDomains
                if let baseDomain = url.baseDomain, !whitelist.domainRegex.isEmpty {
                    let range = NSRange(location: 0, length: baseDomain.count)
                    for ignoreDomain in whitelist.domainRegex {
                        if ignoreDomain.firstMatch(in: baseDomain , options: [], range: range) != nil {
                            return nil
                        }
                    }

        }
    }

    func urlIsInList(_ url: URL, whitelistedDomains: [NSRegularExpression]) -> BlocklistName? {
        let resourceString = url.absoluteString
        let resourceRange = NSRange(location: 0, length: resourceString.count)

