title: Nestjs event emitter alternative with callback
body: <p>I am experimenting and learning about nestjs but I am not able to find a proper solution to the following scenario:</p>
  <p>Module Users</p>
  <p>Module Books</p>
  <p>Module Dashboard</p>
  <p>The dashboard is a graphql that resolves his needs to calling the service of the books and the service of the users of those books.</p>
  <p>I only know two ways of solving the order of a book and at the same time update the user information.</p>
  <p>1- Using a mutation on the graphql dashboard that also calls an event that will be listen by the corresponding service that will update this new order, here is the example of this use case: <a href="https://github.com/nestjs/nest/tree/master/sample/30-event-emitter" rel="nofollow noreferrer">https://github.com/nestjs/nest/tree/master/sample/30-event-emitter</a></p>
  <p>2- Using Dependency Injection considering the dashboard to have a dependency of the corresponding services of users and books and simply update everything that is needed.</p>
  <p>The problem:</p>
  <p>Solution 1 the event does not provide a callback or response, it acts as the emition of an event that I cannot get feedback afterwards, more like an action or command than a function.</p>
  <p>Solution 2 the dashboard knows too much, I don't need to provide the whole module as DI, to later call just one method to update the user information after an order had happen.</p>
  <p>What I need, and I don't find anyware. An Event that I can listen after it gets executed... in other words similar to the following:</p>
  <pre><code>export interface OrderResults {
    user: UserCustomer;
    order: OrderCreated;
  }
  
  @Injectable()
  export class Dashboard {
    constructor(private reaonly eventEmitter: EventEmitter2): Promise&lt;OrderResults&gt; {}
    async createOrder(order) {
      const orderEventResults = await this.eventEmitter.emit('create.order', order)
      return orderEventResults
    }
  }
  </code></pre>
  <p>The order event results, is that the users and the orders got properly notified and updated, resolving with the results of the listener of the user / orders.</p>
  <p>My dashboard is completely agnostic of how or who will take care of this, but will serve to the client the results that corresponds from this events getting resolved by those services who take care of this event.</p>
  <p>Any help or guidance in regards to this will be welcomed.</p>