No can do. When someone expects a Func<T> f you can assume it will be invoked with something like result = f() – i.e., it does not know about async behavior. If you cheat it by using .Result like you have, it will deadlock on UI thread because it wants to schedule the code after await (in _Fetch) on the UI thread, but you have already blocked it with .Result.
Async lambda can be passed to Action since it has no return value – or to Func<Task> or Func<Task<T>>.
Looking at your case, the GetOrCreateObject appears to be calling GetOrFetchObject. One of the GetOrFetchObject overloads accepts a Func<Task<T>>. You can try calling that method with your async lambda and see if it helps.