diff --git a/app/scripts/controllers/permissions/index.js b/app/scripts/controllers/permissions/index.js index 0bb628d2dbcd..bc3f718191b4 100644 --- a/app/scripts/controllers/permissions/index.js +++ b/app/scripts/controllers/permissions/index.js @@ -724,17 +724,17 @@ export class PermissionsController { * @param {string} req - The internal rpc-cap user request object. */ requestUserApproval: (req) => { - const { metadata: { id, origin } } = req + return new Promise((resolve, reject) => { + const { metadata: { id, origin } } = req - if (this.pendingApprovalOrigins.has(origin)) { - throw ethErrors.rpc.resourceUnavailable( - 'Permissions request already pending; please wait.', - ) - } + if (this.pendingApprovalOrigins.has(origin)) { + throw ethErrors.rpc.resourceUnavailable( + 'Permissions request already pending; please wait.', + ) + } - this._showPermissionRequest() + this._showPermissionRequest() - return new Promise((resolve, reject) => { this._addPendingApproval(id, origin, resolve, reject) }) }, diff --git a/test/unit/app/controllers/permissions/permissions-middleware-test.js b/test/unit/app/controllers/permissions/permissions-middleware-test.js index 501cbb233283..8b56eb764339 100644 --- a/test/unit/app/controllers/permissions/permissions-middleware-test.js +++ b/test/unit/app/controllers/permissions/permissions-middleware-test.js @@ -397,12 +397,17 @@ describe('permissions middleware', function () { ) const resA2 = {} - await assert.rejects( + userApprovalPromise = getUserApprovalPromise(permController) + + const requestApprovalFail = assert.rejects( aMiddleware(reqA2, resA2), expectedError, 'request should be rejected with correct error', ) + await userApprovalPromise + await requestApprovalFail + assert.ok( ( !resA2.result && resA2.error &&