function _readSourceFile(filename) {
    return __awaiter$3(this, void 0, void 0, function () {
        var cachedFile, content;
        return __generator$1(this, function (_a) {
            switch (_a.label) {
                case 0:
                    cachedFile = FILE_CONTENT_CACHE.get(filename);
                    // We have a cache hit
                    if (cachedFile !== undefined) {
                        return [2 /*return*/, cachedFile];
                    }
                    content = null;
                    _a.label = 1;
                case 1:
                    _a.trys.push([1, 3, , 4]);
                    return [4 /*yield*/, readTextFileAsync(filename)];
                case 2:
                    content = _a.sent();
                    return [3 /*break*/, 4];
                case 3:
                    _a.sent();
                    return [3 /*break*/, 4];
                case 4:
                    FILE_CONTENT_CACHE.set(filename, content);
                    return [2 /*return*/, content];
            }
        });
    });
}
Reads file contents and caches them in a global LRU cache.

@param filename filepath to read content from.