                    case .success(.webCancelled):
                        self.notifyDelegate(result: .canceled)
                    case .success(.nativeCancelled):
-                       self.notifyDelegate(result: .canceled)
+                        self.userDidCancelInNative = true
+                        self.fetchSession()
                    case .failure(let error):
                        self.notifyDelegate(result: .failed(error: error))
                    }

                self.loadingView.activityIndicatorView.stp_stopAnimatingAndHide()
                switch result {
                case .success(let session):
                    self.notifyDelegate(result: .completed(session: session))
                case .failure(let error):
                    self.loadingView.errorView.isHidden = false
                    self.fetchSessionError = error


    private var authSessionManager: AuthenticationSessionManager?
    private var fetchSessionError: Error?
    // Users can cancel the web flow even if they successfully linked
    // accounts. This flag helps us handle this edge-case.
    private var userDidCancelInNative: Bool = false

    private let clientSecret: String
    private let apiClient: FinancialConnectionsAPIClient
