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; }); }); }