implementing ._read is optional and you can use `resume` event instead

since ._read no longer holds the callback. We can delegate ._read's task to an event.
In this pull request I've use `resume` event for that.