Combine all of the ingredients in a large mixing bowl or in a stand mixer fitted with the hook attachment. Combine the dough until it comes together and then if mixing by hand, turn the dough out onto a work surface and knead until smooth, about 5 minutes – if using a mixer, knead the dough for 3 minutes. Place the dough in an oiled bowl, cover with plastic wrap and let rise until doubled in size, about 90 minutes.
Turn the dough out onto a lightly floured work surface, roll into a log and cut into 12 equal pieces. To create the braided buns, cut each piece of dough in half and roll out each half into a thin rope about 12-inches long. Place one rope of dough over the second, creating a cross. Bring the ends of the bottom (vertical) rope over the top rope, crossing over completely. Repeat this with the horizontal piece of dough and continue crossing the ropes over until you reach then ends of the dough (the bun will be about 4-inches long). Tuck in the end pieces and place the bun on a parchment-lined baking tray. Repeat with the remaining buns, spacing them at least 2-inches apart on the tray. Cover the tray with plastic wrap and let the buns rise for about 45 minutes, until almost doubled in size.
Preheat the oven to 350F and brush the buns with the egg wash. Sprinkle the buns with sesame seeds and /or poppy seeds and bake for 20 to 25 minutes, until a rich golden brown.
The buns are best served warm, but can be re-heated for 5 minutes in a 300F oven. The buns are best enjoyed the day they are baked.