Node.jsのUnhandledPromiseRejectionWarningについて

Node.jsのバージョン14まででは、以下の二つのケースでUnhandledPromiseRejectionWarningが発生します。

  • async関数内でエラーをthrowしており、それがキャッチされていない
  • Promiseがrejectされており、それがcatchでハンドリングされていない

まず一つ目の例です。

const main = async () => {
  await new Promise((resolve, reject) => resolve("OK"));
  throw Error("Error!");
};

main();

二つ目の例です。

new Promise((resolve, reject) => reject("reject!"));