public async Task Delete(Uri uri)
        {
            await _authTokenProvider.EnsureAuthTokenValid(_client);

            var result = await RetryHonouringRetryAfter.ExecuteAsync(() => _client.DeleteAsync(BuildManagementUri(uri)));

            if (!result.IsSuccessStatusCode)
            {
                await ThrowFailureExceptionFor(result);
            }
        }
        public async Task Put(Uri uri, object payload)
        {
            await _authTokenProvider.EnsureAuthTokenValid(_client);

            var content = new StringContent(JsonConvert.SerializeObject(payload), Encoding.UTF8, "application/json");

            var result = await RetryHonouringRetryAfter.ExecuteAsync(() => _client.PutAsync(BuildManagementUri(uri), content));

            if (!result.IsSuccessStatusCode)
            {
                await ThrowFailureExceptionFor(result);
            }
        }