Right now, if the client process dies, it doesn't send the delete pod request to the server. In some cases, if the client's stdin is connected to the command and that stream ends, the command ends and the right thing happens. But this isn't the case for other commands.
The best approach here would be for all (non-detached) kdo pods to run a kdo sidecar that listens on stdin until that stream is closed, and then to clean things up on the server side. On the client, a kubectl attach can be used to connect to that stream, and it will properly disconnect if that client process dies for any reason.