 	/**
    Run executable and return before it is finished.
 
-   - parameter executable: path to an executable file.
-   - parameter args: arguments to the executable.
-   - returns: an AsyncShellTask with standard output, standard error and a 'finish' function.
+   - parameter executable: Path to an executable file. If not then exit.
+   - parameter args: Arguments to the executable.
+   - returns: An AsyncShellTask with standard output, standard error and a 'finish' function.
 	*/
 	public func runAsync (executable: String, _ args: Any ...) -> AsyncShellTask {
 		let stringargs = args.flatten().map { String($0) }

   Wait for this shell task to finish.

   - returns: itself
   - throws: a ShellError if the return code is anything but 0.
	*/
	public func finish() throws -> AsyncShellTask {
		try task.finish()

	exit(errorcode)
}

/**
Print error to standard error and halt execution.

- parameter error: the error
- returns: not.
*/
@noreturn public func exit (error: ErrorType) {
	if let shellerror = error as? ShellError {
		exit(errormessage: shellerror, errorcode: shellerror.errorcode)
