Add the butter to a large saucepan over medium heat to melt. Once foaming and melted, add the shallots and garlic and saute until tender, about 5 minutes. Add the red pepper flakes, cook until fragrant, and sprinkle with salt and pepper. Stir in the flour and cook until blonde and pasty. Gradually pour in the chicken broth while stirring. Bring the mixture to a boil, and then reduce to a simmer. Add the asparagus and simmer until it's nice and tender, about 15 minutes. Stir in the half-and-half. Remove from the heat and use a stick blender to puree the soup until smooth. Season with salt and pepper.