'use strict'; const common = require('../common'); if (!common.hasCrypto) common.skip('missing crypto'); const assert = require('assert'); const { createServer, connect } = require('http2'); const messages = []; const expected = [ 'Stream:created', 'Stream:error', 'Stream:close', 'Request:error' ]; const server = createServer(); server.on('stream', (stream) => { messages.push('Stream:created'); stream .on('close', () => messages.push('Stream:close')) .on('error', (err) => messages.push('Stream:error')) .respondWithFile('dont exist'); }); server.listen(0); const client = connect(`http://localhost:${server.address().port}`); const req = client.request(); req.on('response', common.mustNotCall()); req.on('error', () => { messages.push('Request:error'); client.close(); }); client.on('close', common.mustCall(() => { assert.deepStrictEqual(messages, expected); server.close(); }));