I would like to have control over the threading of the diagnostics update, instead of using a node timer (which could block other callbacks).
For diagnostics updater, I'd want option to create a low-level thread that will handle the call to update().
I can do a pull request to implement this, but I would like to know if there was a reason for this change from ROS1->ROS2.
ROS1 gave the responsibility of calling update() to the application instead of creating a timer internal to the updater.