variable safeAsync Safely execute async operation, returning null on error. Re-throws PaymentUserError so user-facing messages propagate. Type GuardedAsync