AsyncMessenger: a trivial refactory and a fix

Sorry, there still exists problem. If errno is ECONNRESET or ETIMEDOUT alike, we need to return <0 value to indicate caller. Here you will return a positive number even if error happen.