---
title: "Executing a request"
slug: "executing-a-request"
abstract: "Overview of session methods and how requests are executed."
---
# Executing a request

All requests are executed asynchronously by the `ISitecoreUTSession` interface instance. The Universal Tracker SDK contains the corresponding class, but it should not be instantiated directly.

`ISitecoreUTSession` provides methods that process the appropriate events objects. For example:

```csharp
UTResponse response = await session.ReadItemAsync(request);
```

If you cannot use the `async` keyword with your method, use the `Task.WaitAll()` method instead:

```csharp
var trackEventTask = session.TrackEventAsync(request);
Task.WaitAll(trackEventTask);
UTResponse response = trackEventTask.Result;
```

To track different types of events, use the following session methods:

- TrackEventAsync
- TrackGoalAsync
- TrackCampaignEventAsync
- TrackDownloadEventAsync
- TrackPageViewEventAsync
- TrackSearchEventAsync
- TrackOutcomeEventAsync
- TrackLocationEventAsync
- TrackErrorEventAsync
- TrackInteractionAsync