Source: http://www.ee.ncu.edu.tw/~jimmy/courses/DSD06/02_async.pdf