mysql/aurora not immediately seeing results of committed transactions
SELECT * FROM tbl_user WHERE userID = 123 FOR UPDATE;
SELECT * FROM tbl_foo WHERE fk_user = 123 AND unique_column = 'abc';


You are missing FOR UPDATE on the second one?

Can you combine both SELECTs with a JOIN?  (This would help avoid a deadlock.)