src/vs/workbench/contrib/tasks/browser/abstractTaskService.ts/AbstractTaskService/computeWorkspaceTasks
class AbstractTaskService:	protected computeWorkspaceTasks(runSource: TaskRunSource = TaskRunSource.User): Promise<Map<string, WorkspaceFolderTaskResult>> {
		let promises: Promise<WorkspaceFolderTaskResult | undefined>[] = [];
		for (let folder of this.workspaceFolders) {
			promises.push(this.computeWorkspaceFolderTasks(folder, runSource).then((value) => value, () => undefined));
		}
		return Promise.all(promises).then(async (values) => {
			let result = new Map<string, WorkspaceFolderTaskResult>();
			for (let value of values) {
				if (value) {
					result.set(value.workspaceFolder.uri.toString(), value);
				}
			}
			const folder = await this.getAFolder();
			const userTasks = await this.computeUserTasks(folder, runSource).then((value) => value, () => undefined);
			if (userTasks) {
				result.set(USER_TASKS_GROUP_KEY, userTasks);
			}

			if (this.contextService.getWorkbenchState() !== WorkbenchState.EMPTY) {
				const workspaceFileTasks = await this.computeWorkspaceFileTasks(folder, runSource).then((value) => value, () => undefined);
				if (workspaceFileTasks && this._workspace && this._workspace.configuration) {
					result.set(this._workspace.configuration.toString(), workspaceFileTasks);
				}
			}
			return result;
		});
	}