From 402b497299c04e3b4714842c5caad50197088d0c Mon Sep 17 00:00:00 2001 From: Mark Ladyshau <47859603+mrkldshv@users.noreply.github.com> Date: Thu, 26 May 2022 17:14:38 +0200 Subject: fix(core): rethrow exception during structured cloning serialization (#14671) - Introduced optional callback for Deno.core.serialize API, that returns cloning error if there is one. - Removed try/catch in seralize structured clone function and throw error from callback. - Removed "Object with a getter that throws" assertion from WPT. --- ext/web/13_message_port.js | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) (limited to 'ext/web') diff --git a/ext/web/13_message_port.js b/ext/web/13_message_port.js index 8242f85f3..01ed92d9a 100644 --- a/ext/web/13_message_port.js +++ b/ext/web/13_message_port.js @@ -265,18 +265,15 @@ WeakSetPrototypeAdd(detachedArrayBuffers, arrayBuffer); } - let serializedData; - try { - serializedData = core.serialize(data, { - hostObjects: ArrayPrototypeFilter( - transferables, - (a) => ObjectPrototypeIsPrototypeOf(MessagePortPrototype, a), - ), - transferedArrayBuffers, - }); - } catch (err) { - throw new DOMException(err.message, "DataCloneError"); - } + const serializedData = core.serialize(data, { + hostObjects: ArrayPrototypeFilter( + transferables, + (a) => ObjectPrototypeIsPrototypeOf(MessagePortPrototype, a), + ), + transferedArrayBuffers, + }, (err) => { + throw new DOMException(err, "DataCloneError"); + }); /** @type {globalThis.__bootstrap.messagePort.Transferable[]} */ const serializedTransferables = []; -- cgit v1.2.3