diff --git a/src/display/api.js b/src/display/api.js index c8c5c025b..9339e5bc7 100644 --- a/src/display/api.js +++ b/src/display/api.js @@ -1624,9 +1624,8 @@ class PDFPageProxy { } class LoopbackPort { - constructor(defer = true) { + constructor() { this._listeners = []; - this._defer = defer; this._deferred = Promise.resolve(undefined); } @@ -1670,7 +1669,7 @@ class LoopbackPort { continue; } if (typeof desc.value === "function") { - if (value.hasOwnProperty && value.hasOwnProperty(i)) { + if (value.hasOwnProperty?.(i)) { throw new Error( `LoopbackPort.postMessage - cannot clone: ${value[i]}` ); @@ -1682,19 +1681,13 @@ class LoopbackPort { return result; } - if (!this._defer) { - this._listeners.forEach(listener => { - listener.call(this, { data: obj }); - }); - return; - } - const cloned = new WeakMap(); - const e = { data: cloneValue(obj) }; + const event = { data: cloneValue(obj) }; + this._deferred.then(() => { - this._listeners.forEach(listener => { - listener.call(this, e); - }); + for (const listener of this._listeners) { + listener.call(this, event); + } }); }