Perform asynchronous reading in parallel

I found it useful to do multiple reads in parallel with a set of my extension methods TaskFactorythat could be used as:

static async Task Main(string() args)
{
    var (r1, r2, r3, r4) = await Task.Factory.StartNew(
        Read1Async, Read2Async, Read3Async, Read4Async);

    async Task Read1Async() => /* cut as not relevant */;
    async Task Read2Async() => /* cut as not relevant */;
    async Task Read3Async() => /* cut as not relevant */;
    async Task Read4Async() => /* cut as not relevant */;
}

The actual help code is:

public static class TaskFactoryExtensions
{
    public async static Task<(T1, T2)> StartNew(
        this TaskFactory taskFactory,
        Func> action1,
        Func> action2)
    {
        var task1 = Task.Run(action1);
        var task2 = Task.Run(action2);            
        return (await task1, await task2);
    }

    public async static Task<(T1, T2, T3)> StartNew(
        this TaskFactory taskFactory,
        Func> action1,
        Func> action2,
        Func> action3)
    {
        var task1 = Task.Run(action1);
        var task2 = Task.Run(action2);
        var task3 = Task.Run(action3);            
        return (await task1, await task2, await task3);
    }

    public async static Task<(T1, T2, T3, T4)> StartNew(
        this TaskFactory taskFactory,
        Func> action1,
        Func> action2,
        Func> action3,
        Func> action4)
    {
        var task1 = Task.Run(action1);
        var task2 = Task.Run(action2);
        var task3 = Task.Run(action3);
        var task4 = Task.Run(action4);
        return (await task1, await task2, await task3, await task4);
    }
}

It saves only when typing …