 	###*
 	 * Throw an error to break the program.
 	 * @param  {Any} err
+	 * @example
+	 * ```coffee
+	 * Promise.resolve().then ->
+	 * 	# This error won't be caught by promise.
+	 * 	utils.throw 'break the program!'
+	 * ```
 	###
 	throw: (err) ->
 		setTimeout -> err

	 * If the list is an array, it should be a list of functions or promises,
	 * and each function will return a promise.
	 * If the list is a function, it should be a iterator that returns
	 * a promise, when it returns `utils.end`, the iteration ends.
	 * @param {Boolean} saveResults Whether to save each promise's result or
	 * not. Default is true.
	 * @param {Function} progress If a task ends, the resolve value will be

		else if fns.length > 1
			iter = genIter fns
		else
			return throw new TypeError 'wrong argument type: ' + fn

		utils.end ?= {}

