mirror of https://github.com/nodejs/node.git
49 lines
1.1 KiB
JavaScript
49 lines
1.1 KiB
JavaScript
'use strict';
|
|
const common = require('../common');
|
|
const assert = require('assert');
|
|
|
|
const { MessageChannel } = require('worker_threads');
|
|
|
|
{
|
|
const { port1, port2 } = new MessageChannel();
|
|
|
|
// Returning a non-function in the getter should not crash.
|
|
Object.defineProperty(port1, 'onmessage', {
|
|
get() {
|
|
port1.unref();
|
|
return 42;
|
|
}
|
|
});
|
|
|
|
port2.postMessage({ foo: 'bar' });
|
|
|
|
// We need to start the port manually because .onmessage assignment tracking
|
|
// has been overridden.
|
|
port1.start();
|
|
port1.ref();
|
|
}
|
|
|
|
{
|
|
const err = new Error('eyecatcher');
|
|
process.on('uncaughtException', common.mustCall((exception) => {
|
|
port1.unref();
|
|
assert.strictEqual(exception, err);
|
|
}));
|
|
|
|
const { port1, port2 } = new MessageChannel();
|
|
|
|
// Throwing in the getter should not crash.
|
|
Object.defineProperty(port1, 'onmessage', {
|
|
get() {
|
|
throw err;
|
|
}
|
|
});
|
|
|
|
port2.postMessage({ foo: 'bar' });
|
|
|
|
// We need to start the port manually because .onmessage assignment tracking
|
|
// has been overridden.
|
|
port1.start();
|
|
port1.ref();
|
|
}
|