diff options
Diffstat (limited to 'core/core.js')
-rw-r--r-- | core/core.js | 16 |
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, |