import { createServer } from "node:http"
import { once } from "node:events"
import { RetryAgent, Agent, fetch } from "undici";
import asserts from "node:assert";
let retry = true;
const server = createServer((req, res) => {
res.writeHead(200, { "Content-Type": "text/plain" });
if (retry) {
retry = false;
res.flushHeaders();
res.write('H');
setTimeout(() => {
res.end('ello World');
}, 1000);
} else {
res.end('Hello World');
}
})
server.listen();
await once(server, 'listening')
const agent = new RetryAgent(new Agent({bodyTimeout: 500}), {
errorCodes: ['UND_ERR_BODY_TIMEOUT'],
});
const { port } = server.address()
const res = await fetch(`http://localhost:${port}`, {
dispatcher: agent,
});
asserts.equal(await res.text(), 'Hello World');
server.close();
AssertionError [ERR_ASSERTION]: 'HHello World' == 'Hello World'