Step 3 of importExternalTexture states: "If usability is bad, throw an InvalidStateError and stop."
[EDIT: and copyExternalImageToTexture --@kainino0x]
Because this exception needs to be thrown synchronously, importExternalTexture cannot be implemented in a way where the source image is decoded asynchronously.
It would give implementers more flexibility to decode images in a separate thread or on the GPU if we could emit a WebGPU error instead of throwing an exception when the source image is not fully decodable.