summaryrefslogtreecommitdiff
path: root/core/core.js
diff options
context:
space:
mode:
Diffstat (limited to 'core/core.js')
-rw-r--r--core/core.js16
1 files changed, 16 insertions, 0 deletions
diff --git a/core/core.js b/core/core.js
index b3c0ddc13..5f9d6f981 100644
--- a/core/core.js
+++ b/core/core.js
@@ -38,6 +38,7 @@ SharedQueue Binary Layout
let initialized = false;
let opsCache = {};
+ const errorMap = {};
function maybeInit() {
if (!initialized) {
@@ -187,11 +188,26 @@ SharedQueue Binary Layout
return send(opsCache[opName], control, ...zeroCopy);
}
+ function registerErrorClass(errorName, errorClass) {
+ if (typeof errorMap[errorName] !== "undefined") {
+ throw new TypeError(`Error class for "${errorName}" already registered`);
+ }
+ errorMap[errorName] = errorClass;
+ }
+
+ function getErrorClass(errorName) {
+ const errorClass = errorMap[errorName];
+ assert(errorClass);
+ return errorClass;
+ }
+
Object.assign(window.Deno.core, {
setAsyncHandler,
dispatch: send,
dispatchByName: dispatch,
ops,
+ registerErrorClass,
+ getErrorClass,
// sharedQueue is private but exposed for testing.
sharedQueue: {
MAX_RECORDS,