Yeah problems with mutexes are ultimately the fault of the programmer.
The point that the article is trying to make is that because callback APIs don't expose their correctness requirements and because their correctness requirements are externally defined, they encourage programming error like this.