I understand what you are trying to do. You could use custom Error subclasses which allow you to keep handling errors in the catch part while still having some control over which kind of error is thrown instead of a generic one.
"use strict";classPostResponseErrorextendsError{constructor(...parameters){super(...parameters);this.name="PostResponseError";}}classUserResponseErrorextendsError{constructor(...parameters){super(...parameters);this.name="UserResponseError";}}asyncfunctionmain(){try{consturl="https://jsonplaceholder.typicode.com";constpostResponse=awaitfetch(`${url}/posts/1`);if(!postResponse.ok){thrownewPostResponseError("Error with the response");}constpost=awaitpostResponse.json();constuserResponse=awaitfetch(`${url}/users/${post.userId}`);if(!userResponse.ok){thrownewUserResponseError("Error with the response");}constuser=awaituserResponse.json();console.log("User who has posted the first post");console.log(user);}catch(error){if(errorinstanceofPostResponseError){console.log("Error with the post response");}elseif(errorinstanceofUserResponseError){console.log("Error with the user response");}else{console.error("Unexpected error");}console.error(error);}}main();
I understand what you are trying to do. You could use custom Error subclasses which allow you to keep handling errors in the catch part while still having some control over which kind of error is thrown instead of a generic one.
Beautiful 😍