From 15e4d4210217ac1d1662363beb9254b194324222 Mon Sep 17 00:00:00 2001 From: Frederik Bolding Date: Tue, 6 May 2025 13:35:39 +0200 Subject: [PATCH 1/2] perf: Change request notification order --- .../coverage.json | 4 +-- .../src/common/BaseSnapExecutor.ts | 26 ++++++++++++------- .../src/common/endowments/network.ts | 9 ++++--- 3 files changed, 23 insertions(+), 16 deletions(-) diff --git a/packages/snaps-execution-environments/coverage.json b/packages/snaps-execution-environments/coverage.json index 1e437e58f6..a805965c70 100644 --- a/packages/snaps-execution-environments/coverage.json +++ b/packages/snaps-execution-environments/coverage.json @@ -1,6 +1,6 @@ { "branches": 90, "functions": 94.57, - "lines": 90.13, - "statements": 89.5 + "lines": 90.15, + "statements": 89.52 } diff --git a/packages/snaps-execution-environments/src/common/BaseSnapExecutor.ts b/packages/snaps-execution-environments/src/common/BaseSnapExecutor.ts index 9f96315e4a..4db1377a71 100644 --- a/packages/snaps-execution-environments/src/common/BaseSnapExecutor.ts +++ b/packages/snaps-execution-environments/src/common/BaseSnapExecutor.ts @@ -531,12 +531,15 @@ export class BaseSnapExecutor { assertSnapOutboundRequest(sanitizedArgs); return await withTeardown( (async () => { - await this.#notify({ - method: 'OutboundRequest', - params: { source: 'snap.request' }, - }); try { - return await originalRequest(sanitizedArgs); + const promise = originalRequest(sanitizedArgs); + + await this.#notify({ + method: 'OutboundRequest', + params: { source: 'snap.request' }, + }); + + return await promise; } finally { await this.#notify({ method: 'OutboundResponse', @@ -573,12 +576,15 @@ export class BaseSnapExecutor { assertEthereumOutboundRequest(sanitizedArgs); return await withTeardown( (async () => { - await this.#notify({ - method: 'OutboundRequest', - params: { source: 'ethereum.request' }, - }); try { - return await originalRequest(sanitizedArgs); + const promise = originalRequest(sanitizedArgs); + + await this.#notify({ + method: 'OutboundRequest', + params: { source: 'ethereum.request' }, + }); + + return await promise; } finally { await this.#notify({ method: 'OutboundResponse', diff --git a/packages/snaps-execution-environments/src/common/endowments/network.ts b/packages/snaps-execution-environments/src/common/endowments/network.ts index b631bd18f8..2cec5f82f7 100644 --- a/packages/snaps-execution-environments/src/common/endowments/network.ts +++ b/packages/snaps-execution-environments/src/common/endowments/network.ts @@ -226,15 +226,16 @@ const createNetwork = ({ notify }: EndowmentFactoryOptions = {}) => { return await withTeardown( (async () => { try { - await notify({ - method: 'OutboundRequest', - params: { source: 'fetch' }, - }); const fetchPromise = fetch(input, { ...init, signal: abortController.signal, }); + await notify({ + method: 'OutboundRequest', + params: { source: 'fetch' }, + }); + openFetchConnection = { cancel: async () => { abortController.abort(); From 518bc17b49e98a0c50ef5b6be50a41f27be5572b Mon Sep 17 00:00:00 2001 From: Frederik Bolding Date: Tue, 6 May 2025 13:55:02 +0200 Subject: [PATCH 2/2] Remove unnecesary terminate call --- packages/snaps-controllers/src/snaps/SnapController.test.tsx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/snaps-controllers/src/snaps/SnapController.test.tsx b/packages/snaps-controllers/src/snaps/SnapController.test.tsx index f3a85abb8c..75d4769ce6 100644 --- a/packages/snaps-controllers/src/snaps/SnapController.test.tsx +++ b/packages/snaps-controllers/src/snaps/SnapController.test.tsx @@ -1802,7 +1802,7 @@ describe('SnapController', () => { }); const { rootMessenger } = options; - const [snapController, service] = getSnapControllerWithEES(options); + const [snapController] = getSnapControllerWithEES(options); const snap = snapController.getExpect(MOCK_SNAP_ID); rootMessenger.registerActionHandler( @@ -1845,7 +1845,6 @@ describe('SnapController', () => { ); snapController.destroy(); - await service.terminateAllSnaps(); }); // This isn't stable in CI unfortunately