It does, but you can only run synchronous code on drop. This is what "async drop" is supposed to handle — things like issuing ROLLBACK statements to the database on cancellation.
It also wouldn't help when you have no valid state to restore to, as in the mutex example in the post.