event-emitter, written by go-lang