private async void Handler(object sender, EventArgs e) { if (!_isDirty && !EnsureCommandStade()) { Dispose(); return; } try { var localSender = _simpleConverter?.ConvertFrom(sender) ?? sender; var localEventArgs = _simpleConverter?.ConvertFrom(e) ?? e; var data = new EventData(localSender, localEventArgs); await(_command?.Execute(data, _sync) ?? Task.CompletedTask).ConfigureAwait(false); } catch (ArgumentException) { _isDirty = true; } }