diff --git a/packages/snaps-controllers/src/services/AbstractExecutionService.ts b/packages/snaps-controllers/src/services/AbstractExecutionService.ts index c0b0d102a6..de400b18ec 100644 --- a/packages/snaps-controllers/src/services/AbstractExecutionService.ts +++ b/packages/snaps-controllers/src/services/AbstractExecutionService.ts @@ -7,9 +7,9 @@ import type { SnapRpcHook, SnapRpcHookArgs } from '@metamask/snaps-utils'; import { SNAP_STREAM_NAMES, logError } from '@metamask/snaps-utils'; import type { Json, + JsonRpcFailure, JsonRpcNotification, JsonRpcRequest, - PendingJsonRpcResponse, } from '@metamask/utils'; import { Duration, @@ -441,10 +441,14 @@ export abstract class AbstractExecutionService } log('Parent: Sending Command', message); - const response: PendingJsonRpcResponse = - job.rpcEngine.handle(message); - - if (response.error) { + // eslint is blocking `await` usage even though `handle` returns a promise. + // eslint-disable-next-line @typescript-eslint/await-thenable + const response = await job.rpcEngine.handle(message); + + if ( + ((res): res is JsonRpcFailure => + 'error' in res && res.error !== undefined)(response) + ) { throw new JsonRpcError( response.error.code, response.error.message,