safeAsync<T>(fn: () => Promise<T>,errorCode: ErrorCodeType,): Promise<T | null>
Safely execute async operation, returning null on error. Re-throws PaymentUserError so user-facing messages propagate.
fn: () => Promise<T>
errorCode: ErrorCodeType
Promise<T | null>