From 3589b0a4d704ec3ae0ed2fb682c1ffd5f2b18fe0 Mon Sep 17 00:00:00 2001 From: Amaury Martiny Date: Wed, 26 Feb 2020 17:37:36 +0100 Subject: [PATCH] Fix uncaught promise if tab closes (#254) * Fix uncaught promise if tab closes * Update packages/extension/src/background/handlers/index.ts --- packages/extension/src/background/handlers/index.ts | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/packages/extension/src/background/handlers/index.ts b/packages/extension/src/background/handlers/index.ts index 74c345cd..a6bb4539 100644 --- a/packages/extension/src/background/handlers/index.ts +++ b/packages/extension/src/background/handlers/index.ts @@ -4,6 +4,8 @@ import { TransportRequestMessage, MessageTypes } from '../types'; +import { assert } from '@polkadot/util'; + import { PORT_EXTENSION } from '../../defaults'; import Extension from './Extension'; import State from './State'; @@ -31,11 +33,18 @@ export default function handler ({ id, messag .then((response): void => { console.log(`[out] ${source}`); // :: ${JSON.stringify(response)}`); + // between the start and the end of the promise, the user may have closed + // the tab, in which case port will be undefined + assert(port, `Port has been disconnected`); + port.postMessage({ id, response }); }) .catch((error): void => { console.log(`[err] ${source}:: ${error.message}`); - port.postMessage({ id, error: error.message }); + // only send message back to port if it's still connected + if (port) { + port.postMessage({ id, error: error.message }); + } }); }