AsyncMessenger: a trivial refactory and a fix

agreed, `break` jumps out the while loop, and `return len` will return the latest `len` to send. maybe i might want to revise the `if` a little bit to improve the readability.