import express from 'express'; import http from 'node:http'; import { once } from 'node:events'; const app = express(); app.use((request, response, next) => { request.steps = ['received']; next(); }); app.use((request, response, next) => { request.steps.push('checked'); next(); }); app.get('/status', (request, response) => response.json({ steps: request.steps })); const server = http.createServer(app); server.listen(0, '127.0.0.1'); await once(server, 'listening'); const base = 'http://127.0.0.1:' + server.address().port; try { const response = await fetch(base + '/status'); console.log((await response.json()).steps.join(' -> ')); } finally { server.closeAllConnections(); await new Promise((resolve, reject) => server.close((error) => (error ? reject(error) : resolve())), ); }