summaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
Diffstat (limited to 'core')
-rw-r--r--core/01_core.js7
-rw-r--r--core/runtime.rs15
2 files changed, 22 insertions, 0 deletions
diff --git a/core/01_core.js b/core/01_core.js
index a2cd9e14b..a8bdeb2a8 100644
--- a/core/01_core.js
+++ b/core/01_core.js
@@ -20,6 +20,7 @@
PromisePrototypeThen,
RangeError,
ReferenceError,
+ ReflectHas,
SafeArrayIterator,
SafeMap,
SafePromisePrototypeFinally,
@@ -235,6 +236,9 @@
} catch (err) {
// Cleanup the just-created promise
getPromise(id);
+ if (!ReflectHas(ops, name)) {
+ throw new TypeError(`${name} is not a registered op`);
+ }
// Rethrow the error
throw err;
}
@@ -257,6 +261,9 @@
} catch (err) {
// Cleanup the just-created promise
getPromise(id);
+ if (!ReflectHas(ops, name)) {
+ throw new TypeError(`${name} is not a registered op`);
+ }
// Rethrow the error
throw err;
}
diff --git a/core/runtime.rs b/core/runtime.rs
index dd4d55f82..27fd82496 100644
--- a/core/runtime.rs
+++ b/core/runtime.rs
@@ -4644,6 +4644,21 @@ Deno.core.opAsync("op_async_serialize_object_with_numbers_as_keys", {
.unwrap();
}
+ #[test]
+ fn test_non_existent_async_op_error() {
+ // Verify that "resizable ArrayBuffer" is disabled
+ let mut runtime = JsRuntime::new(Default::default());
+ let err = runtime
+ .execute_script_static(
+ "test_rab.js",
+ r#"Deno.core.opAsync("this_op_doesnt_exist");"#,
+ )
+ .unwrap_err();
+ assert!(err
+ .to_string()
+ .contains("this_op_doesnt_exist is not a registered op"));
+ }
+
#[tokio::test]
async fn cant_load_internal_module_when_snapshot_is_loaded_and_not_snapshotting(
) {