Implemented support for delegating the async completion to the 'then' callback function.

* 'done' is passed to the 'then' callback function
* the 'then' callback function can return true when it wants to handle async itself
* updated README.md to explain this new behavior
* implementation is backwards compatible