ASP.NET Web API OperationCanceledException when browser cancels the request

When a user loads a page, it makes one or more ajax requests, which hit ASP.NET Web API 2 controllers. If the user navigates to another page, before these ajax requests complete, the requests are canceled by the browser. Our ELMAH HttpModule then logs two errors for each canceled request:

Calling async methods from non-async code

I’m in the process of updating a library that has an API surface that was built in .NET 3.5. As a result, all methods are synchronous. I can’t change the API (i.e., convert return values to Task) because that would require that all callers change. So I’m left with how to best call async methods in a synchronous way. This is in the context of ASP.NET 4, ASP.NET Core, and .NET/.NET Core console applications.