Encontré un comportamiento inesperado en mi código de recuperación cuando la conexión a Internet es lenta. Considere el siguiente código (no mi código real):
function handleErrors(response) { if (!response.ok) { throw Error(response.statusText); } return response; } fetch("http://url") .then(handleErrors) .then(response => console.log("success") ) .catch(error => console.log("error") ); // "error" // "success" (why is this called?)La única forma en que puedo explicar este comportamiento es que la respuesta es algo así como una función asíncrona en sí misma (consulte https://stackoverflow.com/a/33446005/3016745 ). Lo que significa que primero se envía la solicitud, inmediatamente después de que se agota el tiempo de conexión y arroja un error, y por último, llega la respuesta y llama al .then.
Revisé el backend y la solicitud y la respuesta fueron exitosas.
¿Esto tiene sentido? ¿Cómo evito este comportamiento?