I do always wonder why these classes are duplicated. I know JS and WasmJS has a different (also duplicated) implementation. Probably historical reasons?
In fact, the JS implementation is also stranger, for reasons I don't quite understand. It uses fields to call its equivalent of
invokeSuspend
, and it doesn't use Result for those fields for some reason