                     && a.allowsCellularAccess == b.allowsCellularAccess
             }
             let lhs = lhs.request, rhs = rhs.request
-            return lhs._ref.urlString == rhs._ref.urlString
+            return lhs._ref._urlString == rhs._ref._urlString
                 && isEqual(lhs.urlRequest, rhs.urlRequest)
-                && lhs.processor == rhs.processor
+                && lhs._ref.isEqualProcessor(to: rhs._ref)
         }
     }
 }

    /// Initializes a request with the given URL.
    public init(url: URL) {
        _ref = Container(resource: Resource.url(url))
        _ref.urlString = url.absoluteString
    }

    /// Initializes a request with the given request.
    public init(urlRequest: URLRequest) {
        _ref = Container(resource: Resource.urlRequest(urlRequest))
        _ref.urlString = urlRequest.url?.absoluteString
    }

    #if !os(macOS)

    /// avoid memberwise retain/releases when `Request is passed around.
    private class Container {
        var resource: Resource
        var _urlString: String? // memoized absoluteString
        var processor: AnyProcessor? {
            didSet { _isUsingDefaultProcessor = false }
        }
        private var _isUsingDefaultProcessor = true
        var memoryCacheOptions = MemoryCacheOptions()
        var cacheKey: AnyHashable?
        var loadKey: AnyHashable?
