In current Async DFS implementation, file system calls are invoked and returns Future<?> immediately to clients. Clients call Future#get to retrieve final results. Future#get internally invokes a chain of callbacks residing in ClientNamenodeProtocolTranslatorPB, ProtobufRpcEngine and ipc.Client. The callback path bypasses the original retry layer/logic designed for synchronous DFS. This proposes refactoring to make retry also works for Async DFS.