anchor.diff:    +makeExample('app/rxjs-extensions.ts')(format='.')
   
     :marked
  -    We load them all at once by importing `rxjs-extensions` in `AppComponent`.
  -
  -  +makeExcerpt('app/app.component.ts', 'rxjs-extensions')(format='.')
  +    We load them all at once by importing `rxjs-extensions` at the top of `AppModule`.
  +
  +  +makeExcerpt('app/app.module.ts', 'rxjs-extensions')(format='.')
   
   :marked
     ### Add the search component to the dashboard
  
positive.code: 
    .l-sub-section
      :marked
        The [switchMap operator](https://github.com/Reactive-Extensions/RxJS/blob/master/doc/api/core/operators/flatmaplatest.md)
        (formerly known as "flatMapLatest") is very clever.
  
        Every qualifying key event can trigger an http call.
        Even with a 300ms pause between requests, we could have multiple http requests in flight
        and they may not return in the order sent.
  
        `switchMap` preserves the original request order while returning
         only the observable from the most recent http call.
        Results from prior calls are canceled and discarded.
  
        We also short-circuit the http call and return an observable containing an empty array
        if the search text is empty.
  
        Note that _canceling_ the `HeroSearchService` observable won't actually abort a pending http request
        until the service supports that feature, a topic for another day.
        We are content for now to discard unwanted results.
    :marked
  
negative.code:   Although we made significant *internal* changes to `getHeroes()`, the public signature did not change.
    We still return a !{_Promise}. We won't have to update any of the components that call `getHeroes()`.
  
    Our stakeholders are thrilled with the added flexibility from the API integration. 
    Now they want the ability to create and delete heroes.
  
    Let's see first what happens when we try to update a hero's details.
  
  .l-main-section
  :marked
    ## Update hero details
  
    We can edit a hero's name already in the hero detail view. Go ahead and try
    it. As we type, the hero name is updated in the view heading. 
    But when we hit the `Back` button, the changes are lost!
  
  .l-sub-section
    :marked
  