src/vs/workbench/contrib/scm/browser/dirtydiffDecorator.ts/DirtyDiffModel/diff
class DirtyDiffModel:	private diff(): Promise<IChange[] | null> {
		return this.progressService.withProgress({ location: ProgressLocation.Scm, delay: 250 }, async () => {
			return this.getOriginalURIPromise().then(originalURI => {
				if (this._disposed || this._model.isDisposed() || !originalURI) {
					return Promise.resolve([]); // disposed
				}

				if (!this.editorWorkerService.canComputeDirtyDiff(originalURI, this._model.resource)) {
					return Promise.resolve([]); // Files too large
				}

				const ignoreTrimWhitespaceSetting = this.configurationService.getValue<'true' | 'false' | 'inherit'>('scm.diffDecorationsIgnoreTrimWhitespace');
				const ignoreTrimWhitespace = ignoreTrimWhitespaceSetting === 'inherit'
					? this.configurationService.getValue<boolean>('diffEditor.ignoreTrimWhitespace')
					: ignoreTrimWhitespaceSetting !== 'false';

				return this.editorWorkerService.computeDirtyDiff(originalURI, this._model.resource, ignoreTrimWhitespace);
			});
		});
	}