public static Task Execute(
            this IReactiveElement self,
            Property <bool> isSubmitting,
            Property <Exception?> submitError,
            Func <Task> action,
            Action?onSuccessSync,
            Action <Exception>?onErrorSync = null)
        {
            Func <Task>?           onSuccess = null;
            Func <Exception, Task>?onError   = null;

            if (onSuccessSync != null)
            {
                onSuccess = () =>
                {
                    onSuccessSync();
                    return(Task.CompletedTask);
                };
            }

            if (onErrorSync != null)
            {
                onError = (exception) =>
                {
                    onErrorSync(exception);
                    return(Task.CompletedTask);
                };
            }

            return(self.Execute(isSubmitting, submitError, action, onSuccess, onError));
        }
        public static Task Execute(
            this IReactiveElement self,
            Property <bool> isSubmitting,
            Property <Exception?> submitError,
            Func <Task> action,
            Func <Task>?onSuccess          = null,
            Func <Exception, Task>?onError = null)
        {
            async Task <bool> BoolAction()
            {
                await action();

                return(true);
            }

            Func <bool, Task>?onBoolSuccess = null;

            if (onSuccess != null)
            {
                onBoolSuccess = _ => onSuccess();
            }

            return(self.Execute(isSubmitting, submitError, BoolAction, onBoolSuccess, onError));
        }