async getQuirks() {
        let quirkFetchTimeout;
        let serializedQuirks = [];

        await Promise.race([
            Promise.all(this.quirks.map(q => {
                return new Promise((resolve, reject) => {
                    q.serialize().then((serializedQuirk) => {
                        serializedQuirks.push(serializedQuirk);

                        resolve();
                    }).catch(err => {
                        Logger.warn(`Error while serializing quirk with ID ${q.id}`, err);

                        //We're swallowing this error so that quirks that do work are still available
                        //in the UI. Still, if this message appears in the logs, it will need investigation
                        resolve();
                    });
                });
            })),
            new Promise((resolve, reject) => {
                quirkFetchTimeout = setTimeout(() => {
                    reject(new Error("Timeout while fetching quirks"));
                }, 9000);
            })
        ]);
        clearTimeout(quirkFetchTimeout);

        return serializedQuirks;
    }
@returns {Promise<Array<{options: Array<string>, description: string, id: string, title: string, value: string}>>}