title: Getting header.append is not a function in setting auth using Apollo angular example
body: <p>I'm implementing a module based on the apollo angular recipe shown here:</p>
  
  <p><a href="https://www.apollographql.com/docs/angular/recipes/authentication.html" rel="nofollow noreferrer">https://www.apollographql.com/docs/angular/recipes/authentication.html</a></p>
  
  <p>However in my case I'm getting an error because the <code>headers</code> parameter does not have an append function (it looks like it has some options like forceFetch and cache).  Should I just initialize an empty {} for headers when it is null - and does that mean the example they are showing is incorrect?  ... Or am I doing something wrong?</p>
  
  <pre><code>import { HttpHeaders } from '@angular/common/http';
  import { Apollo } from 'apollo-angular';
  import { HttpLink } from 'apollo-angular-link-http';
  import { setContext } from 'apollo-link-context';
  import { InMemoryCache } from 'apollo-cache-inmemory';
  
  @NgModule({ ... })
  export class GraphQLModule {
    constructor(
      apollo: Apollo,
      httpLink, HttpLink
    ) {
      const http = httpLink.create({uri: '/graphql'});
  
      const auth = setContext((_, { headers }) =&gt; {
        // get the authentication token from local storage if it exists
        const token = localStorage.getItem('token');
        // return the headers to the context so httpLink can read them
        // in this example we assume headers property exists
        // and it is an instance of HttpHeaders
        if (!token) {
          return {};
        } else {
          return {
            headers: headers.append('Authorization', `Bearer ${token}`)
          };
        }
      });
  
      apollo.create({
        link: auth.concat(http),
        // other options like cache
      });
    }
  }
  </code></pre>