     public init(path: URL, filenameGenerator: @escaping (String) -> String?) throws {
         self.path = path
         self._filenameGenerator = filenameGenerator
+        try self._didInit()
+    }
+    #endif
+
+    private func _didInit() throws {
         try FileManager.default.createDirectory(at: path, withIntermediateDirectories: true, attributes: nil)
-    }
-    #endif
+        _wqueue.asyncAfter(deadline: .now() + initialSweepDelay) { [weak self] in
+            self?._performAndScheduleSweep()
+        }
+    }
 
     // MARK: DataCaching
 

    /// Sweeps are performed in a background and can be performed in parallel
    /// with reading.
    public var sweepInterval: TimeInterval = 30

    // Staging
    private let _lock = NSLock()


    // MARK: Sweep

    private func _performAndScheduleSweep() {
        _sweep()
        _wqueue.asyncAfter(deadline: .now() + sweepInterval) { [weak self] in
            self?._performAndScheduleSweep()
        }
    }

    /// Schedules a cache sweep to be performed immediately.
    public func sweep() {
        _wqueue.async {
            self._sweep()
        }
