Rewrote module to be async.
Merge pull request #4 from alexgorbatchev/async-patch-squashed

Rewrote module to be async.