Currently the implementation of finished/eos depends on internal streams API's which means that there is currently no proper way to implement "streamlike" objects that are compatible.
We've improved the situation with writableFinished but there are still a lot of internal properties that need to be accessed for proper function. Currently e.g. OutgoingMessage has some limitations in regards to this (e.g. #28748 won't work).
I think what needs to be added to the streams API is:
Also, I think readableEnded/writableFinished should be changed so that it becomes true after 'end'/'finish' has been emitted (not like it is today where it is set before).