I have a very simple code snippet like this
async function neverResolve() {
  return new Promise(() => {
    console.log("This promise will never resolve");
  });
}
(async () => {
  try {
    console.log("START");
    // neverResolve().then().catch(); // uncommenting this line works as expected
    await neverResolve();
    await new Promise((resolve) => setTimeout(() => resolve(), 5000));
    console.log("END");
  } catch (error) {
    console.log("ERR: ", error);
  }
})();Why the above function doesn't wait for 5 second and print's the END.
It automatically terminates after printing
START
This promise will never resolve
But if we execute the same function but with a .then() construct, I get the expected result.
async function neverResolve() {
  return new Promise(() => {
    console.log("This promise will never resolve");
  });
}
(async () => {
  try {
    console.log("START");
    neverResolve().then().catch(); 
    await new Promise((resolve) => setTimeout(() => resolve(), 5000));
    console.log("END");
  } catch (error) {
    console.log("ERR: ", error);
  }
})(); 
     
     
     
     
    