fix unlock retry logic so we actually unlock