TPL / Assign object to some value inside Task of object by maintaining async : I don't have much expertise in TPL.

Consider the following scenario:

I have the following classes:

    public class Contact
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public string EmailAddress { get; set; }
        public Company Company { get; set; }
    }
    
    public class Company
    {
        public int Id { get; set; }
        public string Name { get; set; }
    }

Now, I have the following piece of code

    Task<Contact> contactDetails = r.FirstOrDefaultAsync<Contact>();
    Task<Company> companyDetails = r.FirstOrDefaultAsync<Company>();

Now, What I want to is to populate Company property by the companyDetails result. something like that (please check below)

    contactDetails.Company = companyDetails 

I want to do this without calling await function to maintain async.

Can anybody, please help me to do this?

Thank you in advance!