blocking/ non-blocking
===(working)/---(waiting)
(Synchronous)-Total working time, if 3
Client=========(request)----------(restart)=========(pause while waiting)
Server---------=========(response)------------------
(Asynchronous)-Total working time, async = less 3, maybe 2
Client=========(request)(continue)==================(not pause work)
Server---------=========(response)------------------
Async를 핸들링하는 함수, 콜백이 너무 많아지면 callback hell이라는 문제가 발생할 수 있다
how to deal with callback chain, callback과 마찬가지로 promise hell이 발생할 수 있다
(최신 노드에서 사용 가능, ES7?8?에서 추가됨)
promise와 비슷한 역할