The work to process data from an append() might be lengthy given the segment parser algorithm and implementations might need to use I/O for buffering.
The append() algorithm should be modified to allow this work to be done asynchronously. This would make append(Stream) follow the same model. Only one pending append() should be allowed. appendcomplete or appenderror events should be fired when complete.
I'll start updating the spec to make append() async.
It seems to me to add a lot of overhead for simple cases: adding a listener and processing events at each append. Maybe adding a appendSync method should be kept too or adding the possibility to queue appends should be considered.