anchor.diff:  
       * `debounceTime(300)` waits until the flow of new string events pauses for 300 milliseconds
       before passing along the latest string. You'll never make requests more frequently than 300ms.
  -    * `distinctUntilChanged` ensures that a request is sent only if the filter text changed.
  -    * `switchMap()` calls the search service for each search term that makes it through `debounce` and `distinctUntilChanged`.
  +    * `distinctUntilChanged()` ensures that a request is sent only if the filter text changed.
  +    * `switchMap()` calls the search service for each search term that makes it through `debounceTime()` and `distinctUntilChanged()`.
       It cancels and discards previous search observables, returning only the latest search service observable.
   
     .l-sub-section
  
positive.code:     ## Keep the app transpiling and running
      Enter the following command in the terminal window:
  
  code-example(language="sh" class="code-shell").
    npm start
  
  :marked
    This command runs the TypeScript compiler in "watch mode", recompiling automatically when the code changes.
    The command simultaneously launches the app in a browser and refreshes the browser when the code changes.
  
    You can keep building the Tour of Heroes without pausing to recompile or refresh the browser.
  
  .l-main-section#http-providers
  
negative.code:   That's fine for a simulation, but it's wasteful to ask a real server for all heroes when you only want one.
    Most web APIs support a _get-by-id_ request in the form `api/hero/:id` (such as `api/hero/11`).
  
    Update the `HeroService.getHero()` method to make a _get-by-id_ request:
  +makeExcerpt('src/app/hero.service.ts', 'getHero', 'src/app/hero.service.ts')
  
  :marked
    This request is almost the same as `getHeroes()`.
    The hero id in the URL identifies which hero the server should update.
  
    Also, the `data` in the response is a single hero object rather than !{_an} !{_array}.
  