The dart:js_interop interfaces containing type parameters expect that the type parameters extend JSAny. However, JSVoid does not extend JSAny, as it is just a typedef for void.
When IDL code is generated, this causes types in WebIDL like Promise<void> to become JSPromise<JSVoid>, which is not correct.
We should rather generate JSPromise as is, without the void type parameter where possible.