The `abort` event on nodejs is deprecated
@akashbirajdar04 ya está trabajando en esto.
Desde el 30/4/2026.
- #4579 de @sapirbaruch — cerrado sin fusionar
Evaluación
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Aptitud para principiantes
- 52/100
- Tipo de issue
- Error
- Claridad
- Bastante claro
- Estado de actividad
- Tranquilo
- Stack tecnológico
- node.js
- Área
- backend, networking
Línea de trabajo
Comienza con hapi/lib/request.js en la línea 328 y la documentación del abort-event de Node.js http.ClientRequest. Sigue Request.active() y reproduce el comportamiento con una solicitud hapi retrasada mientras actualizas el navegador repetidamente. Se considera terminado cuando las solicitudes desconectadas se detectan y cancelan de forma fiable a pesar del evento obsoleto, y el comportamiento está cubierto por comprobaciones de regresión relevantes.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Runtime
node.js
Runtime version
24
Module version
21.4.4
Last module version without issue
Node 17
Used with
hapi application
Any other relevant information
The Request.active() function always returns true.
The abort event on NodeJS's http.ClientRequest has been deprecated since NodeJS v17, and hapi/lib/request.js is depending on that function.
[1] https://github.com/hapijs/hapi/blob/master/lib/request.js#L328
[2] https://nodejs.org/api/http.html#event-abort
What are you trying to achieve or the steps to reproduce?
When spamming my F5 key on my browser with a request with an intentional delay, the request never got cancelled, and active() always returned true.
What was the result you got?
The requests were never cancelled.
What result did you expect?
I wrote a small plugin to work around the issue:
export const plugin: Plugin<object> = {
name: 'earlyCancel',
register(server) {
server.ext('onPreAuth', (request, tk) => {
request.app.disconnected = false;
request.raw.req.on('close', () => {
if (!request.raw.res.writableEnded) {
request.app.disconnected = true;
}
});
return tk.continue;
});
},
};
And verify that when spamming F5, I was able to get some requests to be cancelled.
- Lenguaje dominante
- JavaScript
- Estrellas
- 14.8k
- Forks
- 1.4k
- Merge medio
- 17 min
- PR fusionados (30 d)
- 4
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de hapijs/hapi
-
The data property of a Boom error gets mangled when the error comes from a validatorQuizá libre de nuevo Un pull request para esta issue se cerró sin fusionarse. Abiertobug
Dificultad 3/5 1-2 días Aptitud para principiantes 70/100
-
Error-tracking software doesn't catch hapi application errors if an incoming request gets prematurely closedQuizá libre de nuevo Un pull request para esta issue se cerró sin fusionarse. Abiertobug
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
-
bug
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
-
bug
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
-
Use ECMA Decorators for routingAbiertofeature
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
Todos los issues de hapijs/hapi
Issues similares
-
accessibility bug html websites
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
quarto-dev/quarto-cli#15187 ·
Los mantenedores suelen responder en 1 día
-
bug needs triage P3
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
pbakaus/impeccable#1143 ·
Los mantenedores suelen responder en 1 día
-
status: waiting for maintainer
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
mui/material-ui#49547 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
capricorn86/happy-dom#2544 ·
Los mantenedores suelen responder en 1 día
-
next() is called twice when the request closes after busboy fails to startPosiblemente ocupada @NgoQuocViet2001 la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100