If the balance is handled in a remote server or location then you should have a remote deduct method which handles the operation in an atomic idempotent manner.
If you are handling data locally e.g in a file then you would ideally rely on OS write lock and only store the deltas and never change state. You could then calculate the balance from the log of deductions and insertions.
FYI this problem has not anything to do with async or JS.