fake promise based on event emitter