How Javascript Handle Asynchronous Code