Consider a scenario where one process is holding a read lock that it is trying to promote to a reserved lock and a second process is holding a reserved lock that it is trying to promote to an exclusive lock. The first process cannot proceed because it is blocked by the second and the second process cannot proceed because it is blocked by the first. If both processes invoke the busy handlers, neither will make any progress.
Karl Mierle had a similar issue back in June with Argon, which he describe there Locking
The SQLite author was contacted by the PySQLite author about the former problem, and he replied
use EXCLUSIVE transactions, but this reduce the amount of concurrency