diff --git a/libs/src/postmate/index.ts b/libs/src/postmate/index.ts index cd58eb856..0a7e39d2e 100644 --- a/libs/src/postmate/index.ts +++ b/libs/src/postmate/index.ts @@ -137,13 +137,17 @@ export class ParentAPI { } get(property, ...args) { - return new Promise((resolve) => { + return new Promise((resolve, reject) => { // Extract data from response and kill listeners const uid = generateNewMessageId() const transact = (e) => { if (e.data.uid === uid && e.data.postmate === 'reply') { this.parent.removeEventListener('message', transact, false) - resolve(e.data.value) + if (e.data.error) { + reject(e.data.error) + } else { + resolve(e.data.value) + } } } @@ -245,6 +249,17 @@ export class ChildAPI { }, e.origin ) + }).catch((error) => { + ;(e.source as WindowProxy).postMessage( + { + property, + postmate: 'reply', + type: messageType, + uid, + error, + }, + e.origin + ) }) }) }