async launchStream( stream, launchChat ) {
		// begin the stream launch procedure
		try {
			await logDebug(
				"Preparing to launch stream",
				() => stream.toJSON({ includeId: true })
			);

			const settingsStreaming = this.settings.content.streaming.toJSON();

			// resolve streaming provider
			const providerObj = await resolveProvider(
				stream,
				settingsStreaming.provider,
				settingsStreaming.providers
			);

			// resolve player
			const playerObj = await resolvePlayer(
				stream,
				settingsStreaming.player,
				settingsStreaming.players
			);

			// launch the stream
			await launch(
				stream,
				providerObj,
				playerObj,
				() => this.onStreamSuccess( stream, launchChat )
			);

		} catch ( error ) {
			await this.onStreamFailure( stream, error );

		} finally {
			await this.onStreamEnd( stream );
		}
	}
@param {Stream} stream
@param {boolean} launchChat
@return {Promise}