Im trying to make an LWC that shows a list of contact tiles that have their own url to navigate to the contact record page. I cannot seem to get the url to push into the array in the .then method. When I console log the urls, I can see them displaying correctly in the console but the URL list is undefined. Any help please would be greatly appreciated!

    import { LightningElement, api, wire, track } from 'lwc';
    import { NavigationMixin } from 'lightning/navigation';
    import { getSObjectValue } from '@salesforce/apex';
    import { getRecord, getFieldValue } from 'lightning/uiRecordApi';
    import getContacts from '@salesforce/apex/AccountController.getContacts';
    import ACCOUNTNAME_FIELD from '@salesforce/schema/Account.Name';
    import CONTACTID_FIELD from '@salesforce/schema/Contact.Id';

    export default class RelationshipMap extends NavigationMixin(LightningElement) {
    @track actions = [
        { label: 'Edit', value: 'edit', iconName: 'utility:edit' },
        { label: 'Delete', value: 'delete', iconName: 'utility:delete' },
    ];
    @api recordId;
    urlList;
    contacts;
    error;

    @wire(getRecord, { recordId: '$recordId', fields: [ACCOUNTNAME_FIELD]})
    account;

    /*
    @wire(getContacts, { accId: '$recordId' })
    contacts;
    */

    @wire(getContacts, { accId: '$recordId' })
    contacts({ error, data }){
       if(data){
           this.contacts = data;
           this.error = undefined;
        for(let i in this.contacts){
            this[NavigationMixin.GenerateUrl]({
                type: "standard__recordPage",
                attributes: {
                    recordId: getSObjectValue(this.contacts[i], CONTACTID_FIELD),
                    objectApiName: "Contact",
                    actionName: 'view',
                },
            }).then((url) => {
                console.log(url); 
                this.urlList.push(url);
            });
        }
        console.log("URL List: " + this.urlList);
       } else if(error){
           this.error = error;
           this.contacts = undefined;
           console.log("Error");
       }
    }

    get accountName() {
       return this.account.data ? getFieldValue(this.account.data, ACCOUNTNAME_FIELD) : '';
    }
    }