Preheat a charcoal or gas grill to high.
Put the potatoes in a 2-quart pot. Add enough water to cover the potatoes by 2 inches and enough salt to make the water taste like seawater. Add the garlic and bay leaves.
Bring the potatoes to a boil and then cook at a gentle simmer until they test tender when poked with a thin fork, 15 to 20 minutes, though it depends on the size and age of the potatoes. Drain the contents of the pot into a sieve set over a heavy bowl, filling the bowl with the hot water just to warm it. Throw out the water, drop the potatoes in the bowl and cover the bowl tightly with plastic wrap to keep the potatoes warm.
As the potatoes cook, toss the onions with a little canola oil and salt and pepper and grill over medium-high heat until charred and soft. On the same grill, heat a cast-iron pan. Add the butter and cook until it browns. Remove from the heat, add the rosemary and give the pan a shake; the butter will foam. When it stops sizzling, add the onions to the butter and cook over low heat until they are very tender and the butter has taken on a pronounced oniony flavor.
Remove the spent rosemary sprigs. Pour the butter and onion mixture over the warm cooked potatoes and serve right away.