Решено. Все работает, но только для параллельных запросов с FOR UPDATE, а я пробовал поймать лок с запросом без FOR UPDATE. То есть мой параллельный запрос должен был выглядеть не так:
SELECT * FROM user_balance WHERE id = 1
А вот так:
SELECT * FROM user_balance WHERE id = 1 FOR UPDATE