Function: flatten() 
flatten<
T,E,F>(nestedTask):Task<T,E|F>
Given a nested Task, remove one layer of nesting.
For example, given a Task<Task<string, E2>, E1>, the resulting type after using this function will be Task<string, E1 | E2>.
Note 
This function only works when the value wrapped in Task is another Task. If you have a Task<string, E> or Task<number, E>, this function won't work. If you have a Task<Task<string, E2>, E1>, then you can call .flatten() to get back a Task<string, E1 | E2>.
Examples 
ts
import * as task from 'true-myth/task';
const nested = task.resolve(task.resolve('hello'));
const flattened = task.flatten(nested); // Task<string, never>
await flattened;
console.log(flattened); // `Resolved('hello')`
const nestedError = task.resolve(task.reject('inner error'));
const flattenedError = task.flatten(nestedError); // Task<never, string>
await flattenedError;
console.log(flattenedError); // `Rejected('inner error')`
const errorNested = task.reject<Task<string, string>, string>('outer error');
const flattenedOuter = task.flatten(errorNested); // Task<string, string>
await flattenedOuter;
console.log(flattenedOuter); // `Rejected('outer error')`Type Parameters 
T 
T
E 
E
F 
F
Parameters 
nestedTask 
Returns 
Task<T, E | F>