_startServer(listener, port, ipAddress) {
        // Todo: http.globalAgent.maxSockets, http.globalAgent.maxFreeSockets
        let server;
        if (this.config.https) {
            server = https.createServer({
                cert: this.config.https.cert,
                key: this.config.https.key,
                ca: this.config.https.ca,
                ciphers: arsenal.https.ciphers.ciphers,
                dhparam: arsenal.https.dhparam.dhparam,
                rejectUnauthorized: true,
            });
            logger.info('Https server configuration', {
                https: true,
            });
        } else {
            server = http.createServer();
            logger.info('Http server configuration', {
                https: false,
            });
        }

        server.on('connection', socket => {
            socket.on('error', err => logger.info('request rejected',
                { error: err }));
        });

        // https://nodejs.org/dist/latest-v6.x/
        // docs/api/http.html#http_event_checkexpectation
        server.on('checkExpectation', listener);
        server.on('request', listener);
        server.on('checkContinue', listener);

        server.on('listening', () => {
            const addr = server.address() || {
                address: ipAddress || '[::]',
                port,
            };
            const { address } = addr;
            logger.info('server started', {
                address, port,
                pid: process.pid, serverIP: address, serverPort: port
            });
        });

        if (ipAddress !== undefined) {
            server.listen(port, ipAddress);
        } else {
            server.listen(port);
        }

        this.servers.push(server);
    }
This starts the http server.
@param {http.RequestListener} listener - Callback to handle requests
@param {number} port - Port to listen on
@param {string | undefined} ipAddress - IpAddress to listen on
@returns {undefined}