I think if this is going to become virtual, it's probably best to delegate to a protected virtual that returns a Task.