Place a large soup pot over medium heat; add oil and butter. Once the butter melts and begins to sizzle, add the onion. Cook the mixture, stirring occasionally, until the onions have completely softened, everything is cooked through and the edges turn slightly brown (about 10 minutes total).
Add the poblano chiles, stir and let them cook along with the onion for 3 to 4 minutes.
Make some room in the middle of the pot; add the corn and sprinkle the salt and pepper. Let everything cook, stirring occasionally, for another 3 to 4 minutes.
Pour in the chicken broth. Let it come to a simmer and cook for 3 to 4 additional minutes so the flavors start to blend. Reduce the heat to low, wait for about a minute, and slowly pour in the milk.
Heat the soup thoroughly for about 6 to 8 minutes, without letting it simmer or boil (if you do, it will appear curdled but still taste fine). Serve hot. Makes about 5 cups.