I'm wondering about the value of allowing a publisher to be passed in here? If we separate a base class out as I've suggested elsewhere and create an interface for metrics publishers, we can just require a publisher to be passed in the constructor and always use that.