Thanks for submitting this and it is an issue that reoccurs regularly. This reason that it occurs is obscure but is in fact by design and can be explained.
First: Transformation pipelines do not build up the event machinery before the first client registers for events and break down this machinery immediately when the last client unregisters. This is because the whole chain of event handlers from source to
client will keep the transformation pipeline allive and in memory. This is nice when clients are registerd but must not happen unneeded.
Second: Value transformations will send new change notifications only after some client has read it's latest value. So when they send a change notification but nobody seems interested in the actual value (by getting the Value property) they will not
send any subsequent change notifications. This is a nice optimization that reduces the number of change notifications sent and is an escape hatch for the infamous X problem. That is a problem where say you have 3 transformations (A, B and C) chained together,
where A depends twice on its source, B depends twice on A and C twice on B. Then a change in the source would cause 2 events to arrive at A. This would cause 2 x 2 = 4 events to arrive at B. That would cause 4 x 2 = 8 events to arrive at C. The number
of events would grow exponentialy. The escape is that if the eventual client does not get the value for C immediately when an event arrives ( for example by using .Async() ). Then one event wil travel from Source -> A -> B -> C and A, B and C will
block any further events. Only later, when the client gets the new value, new events will be passed through.
First and Second combined means that if you first get the Value of a transformation pipeline and second
register for change notifications you may not receive any change notifications.
And last in a multithreaded environment the procedure of first getting the value and second registering for changes would be just plain wrong. In that case you would miss all the significant change events that might occur between the moment of getting the
value and registering for changes.
So: first register for change notifications and second get the value.