Во-первых, используйте предложение Джонарла о переменных связывания. Если большая часть вашего кода похожа на это с 1000 одновременно работающих пользователей, я бы не хотел думать, на что похожа производительность.
Во-вторых, если он занят, то есть вероятность тайм-аута. Как вы говорите, если возникает исключение, оно возвращается к «updateNewUserFav»
Действительно, он должен вызывать это только в том случае, если исключение НЕТ.
Если возникает исключение, функция должна завершиться ошибкой. Текущий код похож на
"TURN THE IGNITION KEY TO START THE CAR"
"IF THERE IS A PROBLEM, RING GARAGE AND BOOK APPOINTMENT"
"PUT CAR INTO GEAR AND RELEASE HAND_BRAKE"
Вы действительно хотите отпустить ручной тормоз только после успешного запуска автомобиля, в противном случае вы в конечном итоге скатитесь с холма до внезапной остановки в конце (часто с использованием дорогого звука CRUNCH).