public AsyncRelayCommand( Func<CancellationToken, Task> action, Func<bool> canExecute, bool canCancel )