Stopping user deletion from running on error

After the discussion with @CelsoBessa in the comments section of the question, I came up with this solution

function display_admin_notices () {
    
    // NOTE: Maybe code should be added here to ensure you are displaying those notices only for certain admin pages
    
    if (isset($_GET['update'])) {
        
        switch ($_GET['update']) {
            
            case NOTICE__ERROR:
                $type="notice-error";
                break;
            
            case NOTICE__WARNING:
                $type="notice-warning";
                break;
            
            case NOTICE__SUCCESS:
                $type="notice-success";
                break;
            
            case NOTICE__INFO:
                $type="notice-info";
                break;
        }
        
        ?>
        <div class="notice is-dismissible">
            <p><?php echo stripslashes($_GET['message']); ?></p>
        </div>
        <?php

    }

}

function delete_user_custom_data ($user_id) {
    
    $result = do_some_cleanp($user_id); // The do_some_cleanp() function returns true on success and false on failure
    
    if ($result == false) {
        $query_vars = array (
            'message'   => rawurlencode('There was a problem.'),
            'update'    => NOTICE__ERROR
        );
        
        $redirect_url = add_query_arg(
            $query_vars,
            network_admin_url('users.php')
        );
        
        wp_safe_redirect($redirect_url);
        exit;
    }
}

// Global constants (within the namespace, but I did not add the namespace to simplify the answer)
const NOTICE__ERROR     = 0;
const NOTICE__WARNING   = 1;
const NOTICE__SUCCESS   = 2;
const NOTICE__INFO      = 3;

add_action('admin_notices', 'display_admin_notices');
add_action('delete_user', 'delete_user_custom_data');