title: Angular2 APP_INITIALIZER not consistent
body: <p>I am using APP_INITIALIZER like it is recommended in <a href="https://stackoverflow.com/a/37611614/3608449">this</a> answer, with my service returning a promise, but it doesn't always wait for it to resolve and I can see my component console.logging undefined and then the service logging the downloaded object. </p>
  
  <p>I need the app to not do anything before this data is loaded.</p>
  
  <p>app.module.ts</p>
  
  <pre><code>import { NgModule, APP_INITIALIZER } from '@angular/core';
  import { Http, HttpModule, JsonpModule } from '@angular/http';
  import { UserService } from '../services/user.service';
  
  &lt;...&gt;
  @NgModule({
    imports: [
      BrowserModule,
      HttpModule,
      FormsModule,
      JsonpModule,
      routing
    ],
    declarations: [
      AppComponent,
      &lt;...&gt;
    ],
    providers: [
      &lt;...&gt;
      UserService,
      {provide: APP_INITIALIZER,
        useFactory: (userServ: UserService) =&gt; () =&gt; userServ.getUser(),
        deps: [UserService, Http],
        multi: true
      }
    ],
    bootstrap: [AppComponent]
  </code></pre>
  
  <p>user.service.ts</p>
  
  <pre><code>@Injectable()
  export class UserService {
  
      public user: User;
      constructor(private http: Http) { }
  
      getUser(): Promise&lt;User&gt; {
          console.log('get user called');
          var observable= this.http.get('/auth/getuser', { headers: getHeaders() })
              .map(extractData);
  
          observable.subscribe(user =&gt; {this.user = user;
              console.log(this.user)});
          return observable.toPromise();
      }
  }
  </code></pre>