- IMetricsPublisher returns plain Task
- make Flush internal
- simply the Publish class and turn it into a module