1'use strict'; 2const common = require('../common'); 3const assert = require('assert'); 4const { MessageChannel } = require('worker_threads'); 5 6// Test that passing duplicate transferrables in the transfer list throws 7// DataCloneError exceptions. 8 9{ 10 const { port1, port2 } = new MessageChannel(); 11 port2.once('message', common.mustNotCall()); 12 13 const port3 = new MessageChannel().port1; 14 assert.throws(() => { 15 port1.postMessage(port3, [port3, port3]); 16 }, /^DataCloneError: Transfer list contains duplicate MessagePort$/); 17 port1.close(); 18} 19 20{ 21 const { port1, port2 } = new MessageChannel(); 22 port2.once('message', common.mustNotCall()); 23 24 const buf = new Uint8Array(10); 25 assert.throws(() => { 26 port1.postMessage(buf, [buf.buffer, buf.buffer]); 27 }, /^DataCloneError: Transfer list contains duplicate ArrayBuffer$/); 28 port1.close(); 29} 30