'use strict'; // Flags: --expose-gc // Note: This is a variant of test-net-write-fully-async-hex-string.js. // This always worked, but it seemed appropriate to add a test that checks the // behavior for Buffers, too. const common = require('../common'); const net = require('net'); const data = Buffer.alloc(1000000); const server = net.createServer(common.mustCall(function(conn) { conn.resume(); })).listen(0, common.mustCall(function() { const conn = net.createConnection(this.address().port, common.mustCall(() => { let count = 0; function writeLoop() { if (count++ === 200) { conn.destroy(); server.close(); return; } while (conn.write(Buffer.from(data))); global.gc(true); // The buffer allocated above should still be alive. } conn.on('drain', writeLoop); writeLoop(); })); }));