async/await로 자바스크립트에서 여러 Functions를 제대로 체이닝 해보기
필자는 electrade를 빌드하고 운영하면서 친구들이 진행하는 프로젝트를 도와준 적이 있다. 최근에는, Craiglist 스타일의 익명 이메일 전송 기능을 서버리스(serverless) Google Firebase Functions로 개발하고 싶어졌다. '.then()' 콜백을 이용해서 비동기 처리를 쉽게 설계할 수 있겠다는 생각이 들었지만, 'async/await'을 이용해서 더 가독성 있고 깔끔한 코드를 짜기로 결심했다. Functions의 다중 체이닝을 다루는 여러 아티클을 읽어보았지만, 대부분은 MSDN에서 그대로 퍼온 미완성의 예제코드여서 도움이 되지 않았다. 그런 예제 중에서는 'async/await'으로 디버그 하기 힘든 함정들이 있었는데, 필자는 거의 모든 함정들에 빠져본 것 같다. 그래서 지금부터는 완성된 코드를 사용해서 필자가 배운 것을 설명하려고 한다.