implementing ._read is optional and you can use  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