Question: ```
public override Task<IdentityResult> ValidateAsync(AppUser item)
        {
            if(item.Email != "a@a.com")
            {
                IEnumerable<string> errors = new List<string>() { "error1" };

            }           
        }

```

The IdentityResultjust needs a simple array or ienumerable of strings in its constructor.

Whats the correct syntax?

Answer: 
If you absolutely need to have ValidateAsync() instead of just Validate(), use a TaskCompletionSource to simulate.

```
public override Task<IdentityResult> ValidateAsync(AppUser item)
{
    var result = new IdentityResult();
    var tcs = new TaskCompletionSource<IdentityResult>();

    if(item.Email != "a@a.com")
    {
        IEnumerable<string> errors = new List<string>() { "error1" };
        result.Add(errors)
    }   
    tcs.SetResult(result);        
    return tcs.Task;
}

```

[Using Task.Run creates unnecessary overhead](http://blogs.msdn.com/b/pfxteam/archive/2012/03/24/10287244.aspx).

EDIT: I'm not exactly sure if TaskCompletionSource is any better than Task.Run. I'd love to hear the answer.
You could use `Task.Run()` to start and get a reference to a new `Task`:

```
public IdentityResult Validate( AppUser item )
{
     IdentityResult result; 

     // do stuff

     return result;
}

public override Task<IdentityResult> ValidateAsync( AppUser item )
{
    return Task.Run( () => Validate(item) );
}

```