src/vs/platform/storage/browser/storageService.ts/IndexedDBStorageDatabase/getItems
class IndexedDBStorageDatabase:	getItems(): Promise<Map<string, string>> {
		return new Promise<Map<string, string>>(async resolve => {
			const items = new Map<string, string>();

			// Open a IndexedDB Cursor to iterate over key/values
			const db = await this.whenConnected;
			const transaction = db.transaction(IndexedDBStorageDatabase.STORAGE_OBJECT_STORE, 'readonly');
			const objectStore = transaction.objectStore(IndexedDBStorageDatabase.STORAGE_OBJECT_STORE);
			const cursor = objectStore.openCursor();
			if (!cursor) {
				return resolve(items); // this means the `ItemTable` was empty
			}

			// Iterate over rows of `ItemTable` until the end
			cursor.onsuccess = () => {
				if (cursor.result) {

					// Keep cursor key/value in our map
					if (typeof cursor.result.value === 'string') {
						items.set(cursor.result.key.toString(), cursor.result.value);
					}

					// Advance cursor to next row
					cursor.result.continue();
				} else {
					resolve(items); // reached end of table
				}
			};

			const onError = (error: Error | null) => {
				this.logService.error(`[IndexedDB Storage ${this.name}] getItems(): ${toErrorMessage(error, true)}`);

				resolve(items);
			};

			// Error handlers
			cursor.onerror = () => onError(cursor.error);
			transaction.onerror = () => onError(transaction.error);
		});
	}