// Flags: --expose-internals 'use strict'; const common = require('../common'); const assert = require('assert'); const { JSTransferable, } = require('internal/worker/js_transferable'); const { E, F } = require('internal/test/transfer'); // Tests that F is transferable even tho it does not directly, // observably extend the JSTransferable class. const mc = new MessageChannel(); mc.port1.onmessageerror = common.mustNotCall(); mc.port1.onmessage = common.mustCall(({ data }) => { assert(!(data instanceof JSTransferable)); assert(data instanceof F); assert(data instanceof E); assert.strictEqual(data.b, 1); mc.port1.close(); }); mc.port2.postMessage(new F(1));