JavaScript로 코딩을 하다보면 I/O 연산은 논블로킹 방식으로 처리되기 때문에 비동기 처리를 반드시 적절하게 해야 한다. I/O함수에 콜백함수를 등록해 콜백함수 내에서 I/O 이후 로직을 처리하면 되지만 콜백이 중첩되다보면 콜백 지옥(callback hell)에 빠지게 된다. 뿐만 아니라 콜백방식을 사용하게 되면 중첩된 콜백함수 중 하나에서 에러가 발생했을 때 예외 처리가 꽤 까다롭다. 아래 순서도와 같이 데이터를 처리 한다고 가정해보자. 콜백 방식으로 처리 위 순서도를 처리하기 위한 콜백 방식의 코드를 보자. 아래 코드는 남자의 키 데이터를 요청하고, 그 후 여자의 키 데이터를 요청한다. 이 때 여자의 키 데이터를 요청 후 응답은 50% 확률로 실패하고 실패하면 null을 반환한다고 가정하자. ..