Fixes #72798: Transport other error types (not just instances of Error)

上级 4ca2a270
......@@ -364,12 +364,16 @@ export class RPCProtocol extends Disposable implements IRPCProtocol {
const pendingReply = this._pendingRPCReplies[callId];
delete this._pendingRPCReplies[callId];
let err: Error | null = null;
if (value && value.$isError) {
err = new Error();
err.name = value.name;
err.message = value.message;
err.stack = value.stack;
let err: any = undefined;
if (value) {
if (value.$isError) {
err = new Error();
err.name = value.name;
err.message = value.message;
err.stack = value.stack;
} else {
err = value;
}
}
pendingReply.resolveErr(err);
}
......@@ -725,7 +729,7 @@ class MessageIO {
}
public static serializeReplyErr(req: number, err: any): VSBuffer {
if (err instanceof Error) {
if (err) {
return this._serializeReplyErrEror(req, err);
}
return this._serializeReplyErrEmpty(req);
......
......@@ -187,4 +187,17 @@ suite('RPCProtocol', () => {
done(null);
});
});
test('issue #72798: null errors are hard to digest', function (done) {
delegate = (a1: number, a2: number) => {
throw { 'what': 'what' };
};
bProxy.$m(4, 1).then((res) => {
assert.fail('unexpected');
done(null);
}, (err) => {
assert.equal(err.what, 'what');
done(null);
});
});
});
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册