Promise 에서 try-catch를 사용 할 수 없는 이유
- 에러는 호출자 방향으로 전파된다.
- 즉, 콜스택의 아래방향인 실행컨텍스트가 푸시되기 직전에 푸시된 실행컨텍스트 방향으로 전파된다.
- 하지만, 비동기 함수의 콜백함수를 호출하는 것은 해당 비동기 함수가 아니다.
- 따라서 비동기 함수는 호출한 함수 컨텍스트가 실행되고, 콜스택에서 제거 되기 때문에 try-catch를 사용하여 에러처리를 할 수 없다.
- 왜냐하면 에러가 발생한 경우는 콜백에서 발생할 텐데, 이미 호출자 함수 컨텍스트가 사라져서 전파된 에러를 잡지 못하기 때문.