private loadUpcomingMeetings(): void {
    this.setState((previousState: IUpcomingMeetingsState, props: IUpcomingMeetingsProps): IUpcomingMeetingsState => {
      previousState.loading = true;
      return previousState;
    });

    this.getGraphAccessToken()
      .then((accessToken: string): Promise<IMeeting[]> => {
        // start timer here..
        this._startTime = new Date();

        return UpcomingMeetings.getUpcomingMeetings(accessToken, this.props.httpClient);
      })
      .then((upcomingMeetings: IMeeting[]): void => {
        this.setState((prevState: IUpcomingMeetingsState, props: IUpcomingMeetingsProps): IUpcomingMeetingsState => {
          prevState.loading = false;
          prevState.upcomingMeetings = upcomingMeetings;

          // end timer here and log..
          this._endTime = new Date();
          var timeTaken: number = this._endTime.valueOf() - this._startTime.valueOf();
          console.log(`componentWillMount: Took ${ timeTaken } ms to call Graph.`);

          AppInsights.trackEvent("Fetch calendar events",
            {},
            { timeTaken: timeTaken }
          );

          return prevState;
        });
      }, (error: any): void => {
        this.setState((prevState: IUpcomingMeetingsState, props: IUpcomingMeetingsProps): IUpcomingMeetingsState => {
          prevState.loading = false;
          prevState.error = error;
          return prevState;
        });
      });
  }