Not sure if this is a bug or intended behaviour, but the following occurs in latest versions of both knockout and tko:
o = ko.observable()
c = ko.pureComputed({ read: o, write: o })
c.subscribe(() => o('c'))
c('o')
o() // 'c'
c() // 'o'
I would expect c() === o() always, since c() should always read the value of o().