async shutdown(code = 0) {
        // Prevent this function being run multiple times by checking whether we're
        // already shutting down
        if (this.isShuttingDown) {
            return;
        }

        try {
            this.isShuttingDown = true;
            logging.warn(tpl(messages.ghostIsShuttingDown));
            await this.stop();
            setTimeout(() => {
                process.exit(code);
            }, 100);
        } catch (error) {
            logging.error(error);
            setTimeout(() => {
                process.exit(1);
            }, 100);
        }
    }
### Shutdown
Stops the server, handles cleanup and exits the process = a full shutdown
Called on SIGINT or SIGTERM