- * XXX This consumer_data.lock should eventually be replaced by
- * a channel lock. It protects metadata_stream read and endpoint
- * status check.
+ * If not called from a timer handler, we have to take the
+ * channel lock to be mutually exclusive with channel teardown.
+ * Timer handler does not need to take this lock because it is
+ * already synchronized by timer stop (and, more importantly,
+ * taking this lock in a timer handler would cause a deadlock).