@Observable with generic typed throw breaks SwiftCompile

@Observable seems not to work well with generic typed throw.

The following code using @Observable with non-generic typed throw builds good:

@Observable
class ThrowsLoadingViewModel<R, E: Error> {
    private(set) var isLoading = true
    private(set) var error: E? = nil
    private(set) var data: R? = nil
    
    private var task: () throws(Error) -> R
    
    init(task: @escaping () throws(E) -> R) {
        self.task = task
    }
    
    func load() {
        do throws(Error) {
            self.data = try task()
        } catch {
//            self.error = error
        }
        self.isLoading = false
    }
}

But if I change Line 7 and 14 to generic, it'll breaks the build with a "Command SwiftCompile failed with a nonzero exit code" message :

@Observable
class ThrowsLoadingViewModel<R, E: Error> {
    private(set) var isLoading = true
    private(set) var error: E? = nil
    private(set) var data: R? = nil
    
    private var task: () throws(E) -> R
    
    init(task: @escaping () throws(E) -> R) {
        self.task = task
    }
    
    func load() {
        do throws(E) {
            self.data = try task()
        } catch {
//            self.error = error
        }
        self.isLoading = false
    }
}

A the same time, if I remove @Observable, the generic typed throw works again:

class ThrowsLoadingViewModel<R, E: Error> {
    private(set) var isLoading = true
    private(set) var error: E? = nil
    private(set) var data: R? = nil
    
    private var task: () throws(E) -> R
    
    init(task: @escaping () throws(E) -> R) {
        self.task = task
    }
    
    func load() {
        do throws(E) {
            self.data = try task()
        } catch {
//            self.error = error
        }
        self.isLoading = false
    }
}

Currently the possible solution seems to fall back to use ObservableObject...

&#64;Observable with generic typed throw breaks SwiftCompile
 
 
Q