async startListening() {
    // We need to verify the port ourselves, to make sure Node.js won't open
    // a named pipe if the provided port number is a string
    if (!Number.isInteger(this.config.port)) {
      throw networkError.get("invalid_port", this.config.port);
    }

    await this.accessLogger.init();

    const initPromises = [];

    for (const protocol of this.protocols.values()) {
      // InternalProtocol is already initialized
      if (protocol.initCalled) {
        continue;
      }

      initPromises.push(
        protocol.init(this).then((enabled) => {
          if (!enabled) {
            this.protocols.delete(protocol.name);
          }
        }),
      );
    }

    await Bluebird.all(initPromises);

    await this.loadMoreProtocols();
  }
Starts the network protocols.
Every protocol is listening for request after this call

@returns {Promise}