xiaobingo you are getting broken promise, because if a promise is left unfulfilled at the time of the destruction, then the future throws broken promise, the code is here: https://github.com/facebook/folly/blob/master/folly/futures/detail/Core.h#L210.
The problem is that in the test for the pause RPC, the test does and async RPC, but does not wait on the returned Future in v1 patch, and instead goes ahead and stops the server which then causes the RPC Client pipeline to the destructed. Since the RPC takes 500ms, it always fails because server and pipeline is destructed. The patch at HBASE-18204 solves the broken promise problem because at the time of pipeline destruction, we already fulfill the promises from the client-dispatcher. I've tested the patch with this patch, and it is doing the expected behavior.
The fix to the test is calling Future.get() before stopping the server. Attaching v2.
posted v0 patch.