1// Flags: --expose-internals 2'use strict'; 3const common = require('../common'); 4const assert = require('assert'); 5 6const { internalBinding } = require('internal/test/binding'); 7const StreamWrap = require('internal/js_stream_socket'); 8const { Duplex } = require('stream'); 9const { ShutdownWrap } = internalBinding('stream_wrap'); 10 11function testShutdown(callback) { 12 const stream = new Duplex({ 13 read: function() { 14 }, 15 write: function() { 16 } 17 }); 18 19 const wrap = new StreamWrap(stream); 20 21 const req = new ShutdownWrap(); 22 req.oncomplete = function(code) { 23 assert(code < 0); 24 callback(); 25 }; 26 req.handle = wrap._handle; 27 28 // Close the handle to simulate 29 wrap.destroy(); 30 req.handle.shutdown(req); 31} 32 33testShutdown(common.mustCall()); 34