                                         reason: "Request \(request) was not mocked but is required to be mocked",
                 userInfo: nil)
             exception.raise()
-            return self.swizzledDataTaskWithRequest(request: request, completionHandler: completionHandler)
+            return fallback()
         }
 
         switch (URLSession.debugMockRequests) {

        }

        // Otherwise, let NSURLSession deal with it
        return swizzledDataTaskWithRequest(request: request, completionHandler: completionHandler)
    }
    
    @objc(swizzledDataTaskWithURL:)
    private func swizzledDataTaskWithURL(url: URL!) -> URLSessionDataTask {
        let request = URLRequest(url: url)
        if let task = task(for: request, completionHandler: nil) {
            
            if URLSession.debugMockRequests != .none {
                Log("request: \(request.debugMockDescription) mocked")
            }
            
            return task
        }
        
        guard URLSession.requestEvaluator(request) == .passThrough else {
            let exception = NSException(name: NSExceptionName(rawValue: "Mocking Exception"),
                reason: "Request \(request) was not mocked but is required to be mocked",
                userInfo: nil)
            exception.raise()
            return self.swizzledDataTaskWithRequest(request: request)
        }
        
        if URLSession.debugMockRequests == .all {
            Log("request: \(request.debugMockDescription) not mocked")
        }
        
        // Otherwise, let URLSession deal with it
        return swizzledDataTaskWithURL(url: url)
    }
    
    // MARK: - Helpers
    
    fileprivate func task(for request: URLRequest, completionHandler: ((Data?, URLResponse?, Error?) -> Void)?) -> URLSessionDataTask? {

                    try URLSession.swizzle(replace: "dataTaskWithURL:", with: "swizzledDataTaskWithURL:")

                    try URLSession.swizzle(replace: "dataTaskWithRequest:completionHandler:", with: "swizzledDataTaskWithRequest:completionHandler:")
                    try URLSession.swizzle(replace: "dataTaskWithURL:completionHandler:", with: "swizzledDataTaskWithURL:completionHandler:")
                    
                    Log("NSURLSession now mocked")
                } catch let e {
