何度も書いてる try-catch の扱いづらさ
ブロックスコープな上に try が文なせいで色々面倒になる
Node.js の Sync 系関数の場合 Promise を返す版にすれば結構楽になる
Web サーバとかじゃないスクリプトで並行に処理する必要もないときは Sync にしてたけど これを考えると Sync にしないほうが楽


// Sync の場合
let stat
try {
stat = fs.statSync(dir)
if (!stat.isDirectory()) {
return
}
} catch (err) {
return
}

// Promise の場合
const stat = await fs.promises.stat(dir).catch(err => null)
if (!stat || !stat.isDirectory()) {
return
}

エラーを見るなら

const stat = await fs.promises.stat(dir).catch(err => err)
if (stat instanceof Error) {
//
}
if (!stat.isDirectory()) {
return
}