RxJSを使ってincremental searchする

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>RxJS Demo</title>
    <style>
        body { font-family: 'Arial'; background: white; text-align: center;}
        #container { width: 40%; min-width: 340px; display: inline-block;}
        .search-bar { padding: 10px; background-color: white; border-bottom: 1px solid lightgray; margin-bottom: 30px;}
        #textfield { width: 100%; height: 20px; font-size: 20px; border: 1px solid #DDDDDD; border-radius: 4px; color: #333333; padding: 5px;}
        ul { list-style-type: none; padding: 0px;  }
        li { background: white; padding: 30px 10px; margin-bottom: 10px; height: 50px; border-bottom: 1px solid lightgray; text-align: left;}
        a { color: blue; font-size: 20px; }
        p { color: #777777; padding-left: 5px; }
    </style>
</head>
<body>
    <div id="container">
        <h1>Serch GitHub Repository </h1>
        <div class="search-bar">
            <input id="textfield" placeholder="Find a repository..." type="text"></input>
        </div>
        <ul id="list"> </ul>
    </div>
<script src="https://unpkg.com/rxjs@6.5.2/bundles/rxjs.umd.min.js"></script>
<script src="./src/index.js"></script>
</body>
</html>
const { from, fromEvent } = rxjs;
const { map, distinctUntilChanged, throttleTime, switchMap } = rxjs.operators;

const searchRepository = (name) => {
    return fetch(`https://api.github.com/search/repositories?q=${name}`)
                  .then(response => response.json())
};

const AddRepositoryList = repository => {
    const li = document.createElement('li');
    const a = document.createElement('a');
    a.link = repository.url
    a.innerText = `${repository.owner.login}/${repository.name}`
    const p = document.createElement('p');
    p.innerText = `■ ${repository.name} ${repository.owner.login}`;
    li.appendChild(a);
    li.appendChild(p);
    document.getElementById('list').appendChild(li);
};

fromEvent(document.getElementById("textfield"), 'input')
   .pipe(
       map(e => e.target.value),
       throttleTime(300),
       distinctUntilChanged(),
       switchMap(repo => from(searchRepository(repo)))
   )
  .subscribe(response => {
      const repositories = response.items;
      repositories.forEach(repository => {
          AddRepositoryList(repository);
      });
   });