๐Ÿ‘Ž ์ฝœ๋ฐฑ์„ ์ด์šฉํ•ด์„œ ๋งŒ๋“  ์ฝ”๋“œ

function runInDelay(seconds) {
  if(!callback){
    throw new Error ('callbackํ•จ์ˆ˜๋ฅผ ์ „๋‹ฌ ํ•ด์•ผํ•จ')
  }
  if(!seconds || seconds < 0){
    throw new Error ('seconds๋Š” 0๋ณด๋‹ค ์ปค์•ผ ํ•จ')
  }
}
try {
  runInDelay(() => {
    console.log('ํƒ€์ด๋จธ ์™„๋ฃŒ');
  }, 2);
} catch (error){
	console.log('์—๋Ÿฌ๋ฐœ์ƒ');
} finally {
	console.log("์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๋˜์ง€~ ๋ง๋˜์ง€~");
} 

๐Ÿ‘ Promise๋ฅผ ํ™œ์šฉํ•œ ์ฝ”๋“œ

function runInDelay(seconds) {
  return **new Promise**((resolve, reject) => {
    if (!seconds || seconds < 0) {
      reject(**new Error**("seconds๊ฐ€ 0๋ณด๋‹ค ์ž‘์Œ!"));
    }
    setTimeout(resolve, seconds * 1000);
  });
}

runInDelay(3)
  .then(() => {
    console.log("ํƒ€์ด๋จธ ์™„๋ฃŒ");
  })
  .catch(console.error)
  .finally(() => {
    console.log("๋๋‚ฌ๋‹ค!");
  });