I'm not sure that I understand what you are trying to do.
The #approveRequest() method can be used to indicate that your system
does not provide a command to delete the semantic element, as it has
been requested. No elements will be deleted unless an executable
command is returned by the system. By implementing #approveRequest() to
return false, you make it so that no elements will be deleted as a
result of the request.
If you want to wait to do this check until the command to delete the
element (and its dependents) is actually being executed, then you can
implement #getBeforeDestroyElementCommand() instead and return a command
whose #doExecuteWithResult() method will cancel the progress monitor.
This will cause the destroy command to stop executing and to rollback
any changes it has made up to that point.