inspector: return Error objects on error
The inspector communicates errors via POJOs. This commit wraps the error information in an actual Error object. PR-URL: https://github.com/nodejs/node/pull/26255 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Eugene Ostroukhov <eostroukhov@google.com> Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
This commit is contained in:
parent
d7a3c3cecc
commit
e3d4a7d999
@ -3,6 +3,7 @@
|
||||
const {
|
||||
ERR_INSPECTOR_ALREADY_CONNECTED,
|
||||
ERR_INSPECTOR_CLOSED,
|
||||
ERR_INSPECTOR_COMMAND,
|
||||
ERR_INSPECTOR_NOT_AVAILABLE,
|
||||
ERR_INSPECTOR_NOT_CONNECTED,
|
||||
ERR_INVALID_ARG_TYPE,
|
||||
@ -48,8 +49,14 @@ class Session extends EventEmitter {
|
||||
if (parsed.id) {
|
||||
const callback = this[messageCallbacksSymbol].get(parsed.id);
|
||||
this[messageCallbacksSymbol].delete(parsed.id);
|
||||
if (callback)
|
||||
callback(parsed.error || null, parsed.result || null);
|
||||
if (callback) {
|
||||
if (parsed.error) {
|
||||
return callback(new ERR_INSPECTOR_COMMAND(parsed.error.code,
|
||||
parsed.error.message));
|
||||
}
|
||||
|
||||
callback(null, parsed.result);
|
||||
}
|
||||
} else {
|
||||
this.emit(parsed.method, parsed);
|
||||
this.emit('inspectorNotification', parsed);
|
||||
|
@ -5,17 +5,22 @@ const common = require('../common');
|
||||
common.skipIfInspectorDisabled();
|
||||
|
||||
(async function test() {
|
||||
const { strictEqual } = require('assert');
|
||||
const assert = require('assert');
|
||||
const { Session } = require('inspector');
|
||||
const { promisify } = require('util');
|
||||
|
||||
const session = new Session();
|
||||
session.connect();
|
||||
session.post = promisify(session.post);
|
||||
const result = await session.post('Runtime.evaluate', {
|
||||
expression: 'for(;;);',
|
||||
timeout: 0
|
||||
}).catch((e) => e);
|
||||
strictEqual(result.message, 'Execution was terminated');
|
||||
await assert.rejects(
|
||||
session.post('Runtime.evaluate', {
|
||||
expression: 'for(;;);',
|
||||
timeout: 0
|
||||
}),
|
||||
{
|
||||
code: 'ERR_INSPECTOR_COMMAND',
|
||||
message: 'Inspector error -32000: Execution was terminated'
|
||||
}
|
||||
);
|
||||
session.disconnect();
|
||||
})();
|
||||
|
Loading…
x
Reference in New Issue
Block a user