How does MySQL DELETE work internally?
DELETE deletes rows as it sees them while using record locks. The delete actually happens at commit time. A log of the changes is made place so other transactions that started before the delete can still see the values.

If an UPDATE happens a small period later, then either a deadlock will happen, or it will lock wait and return no rows found.

So main thing to note is programming:


always handle errors like deadlocks, there's no obvious way for the database to resolve to consider your business case which is why it exits.
use transactions when you need all or none approaches to data changes.