1'use strict'; 2 3const common = require('../common'); 4if (!common.hasCrypto) 5 common.skip('missing crypto'); 6 7const assert = require('assert'); 8const { createServer, connect } = require('http2'); 9 10const messages = []; 11const expected = [ 12 'Stream:created', 13 'Stream:error', 14 'Stream:close', 15 'Request:error', 16]; 17 18const server = createServer(); 19 20server.on('stream', (stream) => { 21 messages.push('Stream:created'); 22 stream 23 .on('close', () => messages.push('Stream:close')) 24 .on('error', (err) => messages.push('Stream:error')) 25 .respondWithFile('dont exist'); 26}); 27 28server.listen(0); 29 30const client = connect(`http://localhost:${server.address().port}`); 31const req = client.request(); 32 33req.on('response', common.mustNotCall()); 34 35req.on('error', () => { 36 messages.push('Request:error'); 37 client.close(); 38}); 39 40client.on('close', common.mustCall(() => { 41 assert.deepStrictEqual(messages, expected); 42 server.close(); 43})); 44