// Flags: --expose-internals 'use strict'; require('../common'); const assert = require('assert'); const net = require('net'); const { internalBinding } = require('internal/test/binding'); const { UV_EOF } = internalBinding('uv'); const { streamBaseState, kReadBytesOrError } = internalBinding('stream_wrap'); const s = new net.Socket({ handle: { readStart: function() { setImmediate(() => { streamBaseState[kReadBytesOrError] = UV_EOF; this.onread(); }); }, close: (cb) => setImmediate(cb) }, writable: false }); assert.strictEqual(s, s.resume()); const events = []; s.on('end', () => { events.push('end'); }); s.on('close', () => { events.push('close'); }); process.on('exit', () => { assert.deepStrictEqual(events, [ 'end', 'close' ]); });