aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ext/mixed/js/core.js51
1 files changed, 22 insertions, 29 deletions
diff --git a/ext/mixed/js/core.js b/ext/mixed/js/core.js
index 7fb3c32e..5f9e172d 100644
--- a/ext/mixed/js/core.js
+++ b/ext/mixed/js/core.js
@@ -318,13 +318,6 @@ const yomichan = (() => {
}
getTemporaryListenerResult(eventHandler, userCallback, timeout=null) {
- let resolve;
- let reject;
- const listenerPromise = new Promise((_resolve, _reject) => {
- resolve = _resolve;
- reject = _reject;
- });
-
if (
typeof eventHandler.addListener === 'undefined' ||
typeof eventHandler.removeListener === 'undefined'
@@ -332,32 +325,32 @@ const yomichan = (() => {
throw new Error('Event handler type not supported');
}
- const runtimeMessageCallback = ({action, params}, sender, sendResponse) => {
- let timeoutId = null;
- if (timeout !== null) {
- timeoutId = window.setTimeout(() => {
- timeoutId = null;
- eventHandler.removeListener(runtimeMessageCallback);
- reject(new Error(`Listener timed out in ${timeout} ms`));
- }, timeout);
- }
-
- const cleanupResolve = (value) => {
- if (timeoutId !== null) {
- window.clearTimeout(timeoutId);
- timeoutId = null;
+ return new Promise((resolve, reject) => {
+ const runtimeMessageCallback = ({action, params}, sender, sendResponse) => {
+ let timeoutId = null;
+ if (timeout !== null) {
+ timeoutId = window.setTimeout(() => {
+ timeoutId = null;
+ eventHandler.removeListener(runtimeMessageCallback);
+ reject(new Error(`Listener timed out in ${timeout} ms`));
+ }, timeout);
}
- eventHandler.removeListener(runtimeMessageCallback);
- sendResponse();
- resolve(value);
- };
- userCallback({action, params}, {resolve: cleanupResolve, sender});
- };
+ const cleanupResolve = (value) => {
+ if (timeoutId !== null) {
+ window.clearTimeout(timeoutId);
+ timeoutId = null;
+ }
+ eventHandler.removeListener(runtimeMessageCallback);
+ sendResponse();
+ resolve(value);
+ };
- eventHandler.addListener(runtimeMessageCallback);
+ userCallback({action, params}, {resolve: cleanupResolve, sender});
+ };
- return listenerPromise;
+ eventHandler.addListener(runtimeMessageCallback);
+ });
}
// Private