Is there anything (anti-pattern) that should prevent me from making an async version of an API call like this?
public IItem GetItem(int id)
{
var result = SomeLengthyServiceCall(id);
return result;
}
public async Task<IItem> GetItemAsync(int id)
{
return await Task.Run(() => this.GetItem(id));
}
Yes, that is an anti-pattern; see Stephen Toub’s excellent blog post on asynchronous wrappers for synchronous methods.
In short, only naturally-asynchronous methods should have asynchronous APIs.