tryWalletAsync to be fully asynchronous (no return check, less LoC)