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