Melt the butter in a large dutch oven over medium-low heat. Add the shallots and cook until soft and translucent, 8-10 minutes, stir often.
Add the stock, corn kernels, salt, and pepper. Bring to a boil, then reduce the heat to medium-low and cook uncovered for 20 minutes. Remove about ¼ cup of the kernels.
Take the dutch oven off the heat and, using an immersion blender, purée the soup until very smooth. You can also purée it in batches in a blender. Be sure to remove the center lid cap to allow steam to escape. Cover with a dishtowel to avoid splatter as well.
Strain the puree over a large bowl using a fine mesh strainer. Use a silicone spatula or the back of a wooden spoon to push the soup through. Discard the remenants in the strainer.
Return the strained soup to the dutch oven. It should have a creamy consistency. If it's too thick, thin it with more chicken stock or water.
Add the previously removed kernels to the soup. Taste and adjust with salt and pepper, if necessary.
Refrigerate for at least two hours before serving. Can also be served hot if desired.