El problema es este:
EF no admite el procesamiento de varias solicitudes a través del mismo objeto DbContext. Si su segunda solicitud asíncrona en la misma instancia de DbContext comienza antes de que finalice la primera solicitud (y ese es el objetivo), obtendrá un mensaje de error que indica que su solicitud se está procesando en un DataReader abierto.
Fuente:https://visualstudiomagazine.com/articles/2014/04/01/async-processing.aspx
Deberá modificar su código a algo como esto:
async Task<List<E1Entity>> GetE1Data()
{
using(var MyCtx = new MyCtx())
{
return await MyCtx.E1.Where(bla bla bla).ToListAsync();
}
}
async Task<List<E2Entity>> GetE2Data()
{
using(var MyCtx = new MyCtx())
{
return await MyCtx.E2.Where(bla bla bla).ToListAsync();
}
}
async Task DoSomething()
{
var t1 = GetE1Data();
var t2 = GetE2Data();
await Task.WhenAll(t1,t2);
DoSomething(t1.Result, t2.Result);
}