Asynchronous API calls with delegates and event handlers
public static async void ApiAction&lt;T&gt;(Uri uri, CallExecuted cbDelegate, HttpMethod method, bool requireAuthentication) Here it

  
  receives a CallExecuted this is the delegate from the calling class.
  After serializing the JSON data it calls this delegate with the item
  as parameter cbDelegate(new CallbackArgs(item));


I think you should learn how to use async-await properly. Instead of using async void (which is a bad practice in general) and taking a delegate, your method should return something like Task&lt;List&lt;Track&gt;&gt;.

This way, your method would look like this:

public Task&lt;List&lt;Track&gt;&gt; GetTracksAsync()
{
    return ApiCaller.ApiAction&lt;List&lt;Track&gt;&gt;(ApiCall.UserTracks, Id);
}


You wouldn't need all the boilerplate around it and you would also handle exceptions properly.

To use GetTracksAsync(), you would then use await:

List&lt;Track&gt; tracks = await GetTracksAsync();