I have the following code:

<C#>


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Microsoft.Graph;
using Outlook = Microsoft.Office.Interop.Outlook;
using Microsoft.Graph.Models;
using Azure.Identity;
using System.Security.Policy;
using Microsoft.Office.Tools;
using static System.Windows.Forms.VisualStyles.VisualStyleElement.ListView;
using static System.Windows.Forms.VisualStyles.VisualStyleElement.StartPanel;
using System.Globalization;

namespace Outage_Helper
{
public partial class OutageCalendarPane : UserControl
{
private const string ClientId = “XXXX”;
private const string TenantId = “XXXX”;
private const string UtilityAccountUsername = “<PRESIDIO_ANONYMIZED_EMAIL_ADDRESS>”;
private const string UtilityAccountPassword = “XXXX”;
private GraphServiceClient _graphClient;
private Outlook.MailItem _selectedMailItem;

public OutageCalendarPane(Outlook.MailItem selectedMailItem)
{
InitializeComponent();
_selectedMailItem = selectedMailItem;
emailContentTextBox.Text = selectedMailItem.Body;
AuthenticateAndInitializeGraphClient().ConfigureAwait(false);
}

private async Task AuthenticateAndInitializeGraphClient()
{
var credential = new ClientSecretCredential(TenantId, ClientId, UtilityAccountPassword);
_graphClient = new GraphServiceClient(credential);
}



private async void submitBtn_Click(object sender, EventArgs e)
{
if (_graphClient != null)
{
string calendarId = “XXXX”;
var newEvent = new Event
{
Subject = eventNameTextBox.Text,
Start = new DateTimeTimeZone { DateTime = startDateTimePicker.Value.ToString(“o”), TimeZone = “UTC” },
End = new DateTimeTimeZone { DateTime = endDateTimePicker.Value.ToString(“o”), TimeZone = “UTC” },
Body = new ItemBody
{
ContentType = BodyType.Text,
Content = $“Username: { _selectedMailItem.Sender.Name}\nNote: { eventNoteTextBox.Text}\n\nEmail Text: { emailContentTextBox.Text}”
}
};

await _graphClient.Users[UtilityAccountUsername].Calendars[calendarId].Events.PostAsync(newEvent).ConfigureAwait(false);
MessageBox.Show(“Outage event has been added to the shared calendar.”);
((Form)this.TopLevelControl).Close();
}
else
{
MessageBox.Show(“Error: Unable to add the outage event. Please try again.”);
}
}

private void cancelBtn_Click(object sender, EventArgs e)
{
((Form)this.TopLevelControl).Close();
}
}
}


</C#>

In the above code secret values have been replaced with XXXX.

The private async Task AuthenticateAndInitializeGraphClient() is not working properly - when submitBtnClick  is called it shows the message box "Error: Unable to add the outage event. Please try again.” and does not make an entry in the calendar. It appears to not have an await condition, and additionally when run the variable _graphClient is null when it should contain a ClientSecretCredential with the TenantID, ClientID and UtilityAccountPassword (app secret). These values are specified correctly in the production code. Please help me debug this code, using the official documentation found here: https://github.com/microsoftgraph/msgraph-sdk-dotnet/tree/feature/5.0/docs. Note that this code must be compatible with Graph 5.0 or above.