AVPlayer playing protected HLS, when session expires and open new session created the player is stall for a small time

I am playing the protected HLS streams and the authorization token expires in 3 minutes. I am trying to achieve this with 'AVAssetResourceLoaderDelegate'. I can refresh the token and play it, but the problem is in between the session, the player stalls for a small time, LIKE 1 SECOND. Here's my code :

class APLCustomAVARLDelegate: NSObject, AVAssetResourceLoaderDelegate {
    
    static let httpsScheme = "https"
    
    static let redirectErrorCode = 302
    static let badRequestErrorCode = 400
    
    private var token: String?
    private var retryDictionary = [String: Int]()
    private let maxRetries = 3
    
    private func schemeSupported(_ scheme: String) -> Bool {
        let supported = ishttpSchemeValid(scheme)
        print("Scheme '\(scheme)' supported: \(supported)")
        return supported
    }
    
    private func reportError(loadingRequest: AVAssetResourceLoadingRequest, error: Int) {
        let nsError = NSError(domain: NSURLErrorDomain, code: error, userInfo: nil)
        print("Reporting error: \(nsError)")
        loadingRequest.finishLoading(with: nsError)
    }
    
   
    
    // Handle token renewal requests to prevent playback stalls
    func resourceLoader(_ resourceLoader: AVAssetResourceLoader, shouldWaitForRenewalOfRequestedResource renewalRequest: AVAssetResourceRenewalRequest) -> Bool {
        print("Resource renewal requested for URL: \(renewalRequest.request.url?.absoluteString ?? "unknown URL")")
        
        // Handle renewal the same way we handle initial requests
        guard let scheme = renewalRequest.request.url?.scheme else {
            print("No scheme found in the renewal URL.")
            return false
        }
        
        if isHttpsSchemeValid(scheme) {
            return handleHttpsRequest(renewalRequest)
        }
        
        print("Scheme not supported for renewal.")
        return false
    }
    
    
    
    private func isHttpsSchemeValid(_ scheme: String) -> Bool {
        let isValid = scheme == APLCustomAVARLDelegate.httpsScheme
        print("httpsScheme scheme '\(scheme)' valid: \(isValid)")
        return isValid
    }
    
    
    
    private func generateHttpsURL(sourceURL: URL) -> URL? {
        // If you need to modify the URL, do it here
        // Currently this just returns the same URL
        let urlString = sourceURL.absoluteString
        print("Generated HTTPS URL: \(urlString)")
        return URL(string: urlString)
    }
    
    private func handleHttpsRequest(_ loadingRequest: AVAssetResourceLoadingRequest) -> Bool {
        print("Handling HTTPS request.")

        guard let sourceURL = loadingRequest.request.url,
              var redirectURL = generateHttpsURL(sourceURL: sourceURL) else {
            print("Failed to generate HTTPS URL.")
            reportError(loadingRequest: loadingRequest, error: APLCustomAVARLDelegate.badRequestErrorCode)
            return true
        }
        
        // Track retry attempts with a dictionary keyed by request URL
        let urlString = sourceURL.absoluteString
        let currentRetries = retryDictionary[urlString] ?? 0
        
        if currentRetries < maxRetries {
            retryDictionary[urlString] = currentRetries + 1
        } else {
            // Too many retries, report a more specific error
            reportError(loadingRequest: loadingRequest, error: NSURLErrorTimedOut)
            retryDictionary.removeValue(forKey: urlString)
            return true
        }

        if var urlComponents = URLComponents(url: redirectURL, resolvingAgainstBaseURL: false) {
            var queryItems = urlComponents.queryItems ?? []
            
            // Generate a fresh token each time
            let freshToken = AESTimeBaseEncription.secureEncryptSecretText()
            
            // Check if the token already exists
            if let existingTokenIndex = queryItems.firstIndex(where: { $0.name == "token" }) {
                // Update the existing token
                queryItems[existingTokenIndex].value = freshToken
            } else {
                // Add the token if it doesn't exist
                queryItems.append(URLQueryItem(name: "token", value: freshToken))
            }
            
            urlComponents.queryItems = queryItems
            redirectURL = urlComponents.url!
        }

        let redirectRequest = URLRequest(url: redirectURL)
        let response = HTTPURLResponse(url: redirectURL, statusCode: APLCustomAVARLDelegate.redirectErrorCode, httpVersion: nil, headerFields: nil)

        print("Redirecting HTTPS to URL: \(redirectURL)")
        loadingRequest.redirect = redirectRequest
        loadingRequest.response = response
        loadingRequest.finishLoading()
        
        // If successful, reset the retry counter
        if retryDictionary[urlString] == maxRetries {
            retryDictionary.removeValue(forKey: urlString)
        }

        return true
    }

    
}

AVPlayer playing protected HLS, when session expires and open new session created the player is stall for a small time
 
 
Q