         }
 
         if needsPreciseProgress {
-            contentLength(of: items[0..<items.count]) { result in
+            contentLength(of: items[...]) { result in
                 switch result {
                 case .cancel:
                     self.complete(with: .cancel)

            case .cancel, .failure:
                callback(result)
            case let .success(headLength, headCached):
                let tail = items[(items.startIndex + 1)..<items.endIndex]
                guard let headLength = headLength else {
                    callback(.success(nil, headCached + [IsCached](repeating: false, count: items.count - 1)))
                    break

            case .cancel, .failure:
                callback(result)
            case .success:
                self.download(items[(items.startIndex + 1)...], callback)
            }
        }
    }
