dawn.node: make popErrorScope reject on validation errors.

The semantic of popErrorScope was changed from raising an exception on
validation errors to instead reject the promise.

Bug: dawn:1123
Bug: dawn:1324
Change-Id: I34322d8293e112eb2d1bfea784e2b2d6be33b604
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/85506
Reviewed-by: Ben Clayton <bclayton@google.com>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
diff --git a/src/dawn/node/binding/GPUDevice.cpp b/src/dawn/node/binding/GPUDevice.cpp
index ffd898d..8703630 100644
--- a/src/dawn/node/binding/GPUDevice.cpp
+++ b/src/dawn/node/binding/GPUDevice.cpp
@@ -454,7 +454,7 @@
         auto* ctx = new Context{env, Promise(env, PROMISE_INFO), async_};
         auto promise = ctx->promise;
 
-        bool ok = device_.PopErrorScope(
+        device_.PopErrorScope(
             [](WGPUErrorType type, char const* message, void* userdata) {
                 auto c = std::unique_ptr<Context>(static_cast<Context*>(userdata));
                 auto env = c->env;
@@ -465,12 +465,14 @@
                     case WGPUErrorType::WGPUErrorType_OutOfMemory:
                         c->promise.Resolve(interop::GPUOutOfMemoryError::Create<OOMError>(env));
                         break;
-                    case WGPUErrorType::WGPUErrorType_Unknown:
-                    case WGPUErrorType::WGPUErrorType_DeviceLost:
                     case WGPUErrorType::WGPUErrorType_Validation:
                         c->promise.Resolve(
                             interop::GPUValidationError::Create<ValidationError>(env, message));
                         break;
+                    case WGPUErrorType::WGPUErrorType_Unknown:
+                    case WGPUErrorType::WGPUErrorType_DeviceLost:
+                        c->promise.Reject(Errors::OperationError(env, message));
+                        break;
                     default:
                         c->promise.Reject("unhandled error type");
                         break;
@@ -478,12 +480,6 @@
             },
             ctx);
 
-        if (ok) {
-            return promise;
-        }
-
-        delete ctx;
-        promise.Reject(Errors::OperationError(env));
         return promise;
     }