Handling async behavior is tricky. I was caught into same gotcha when I first
started dealing with async code few years back. It's useful behavior in most of
the programming applications, especially when we're dealing with heavy or
network-based operation. So you cannot really escape from it, so why not