+
+If you don't want to use a callback, and you don't care about any return value
+from the child process, pass the `'ignore` symbol as the second argument (if
+you don't, and never call `async-get`, it will leave ``*emacs*`` process buffers
+hanging around):
+
+ (async-start
+ (lambda ()
+ (delete-file "a remote file on a slow link" nil))
+ 'ignore)
+
+Note: Even when FINISH-FUNC is present, a future is still returned except that
+it yields no value (since the value is passed to FINISH-FUNC). Calling
+`async-get` on such a future always returns `nil`. It can still be useful,
+however, as an argument to `async-ready` or `async-wait`.
+
+## async-start-process
+
+ async-start-process NAME PROGRAM FINISH-FUNC &rest PROGRAM-ARGS
+
+Start the executable PROGRAM asynchronously. See `async-start`. PROGRAM is
+passed PROGRAM-ARGS, calling FINISH-FUNC with the process object when done.
+If FINISH-FUNC is `nil`, the future object will return the process object when
+the program is finished. Set DEFAULT-DIRECTORY to change PROGRAM's current
+working directory.
+
+## async-get
+
+ async-get FUTURE
+
+Get the value from an asynchronously called function when it is ready. FUTURE is
+returned by `async-start` or `async-start-process` when its FINISH-FUNC is
+`nil`.
+
+## async-ready
+
+ async-ready FUTURE
+
+Query a FUTURE to see if its function's value is ready -- i.e., if no blocking
+would result from a call to `async-get` on that FUTURE.
+
+## async-wait
+
+ async-wait FUTURE
+
+Wait for FUTURE to become ready.
+
+## async-inject-variables
+
+ async-inject-variables INCLUDE-REGEXP &optional PREDICATE EXCLUDE-REGEXP
+
+Return a `setq` form that replicates part of the calling environment. It sets
+the value for every variable matching INCLUDE-REGEXP and also PREDICATE. It
+will not perform injection for any variable matching EXCLUDE-REGEXP (if
+present). It is intended to be used as follows:
+
+ (async-start
+ `(lambda ()
+ (require 'smtpmail)
+ (with-temp-buffer
+ (insert ,(buffer-substring-no-properties (point-min) (point-max)))
+ ;; Pass in the variable environment for smtpmail
+ ,(async-inject-variables "\\`\\(smtpmail\\|\\(user-\\)?mail\\)-")
+ (smtpmail-send-it)))
+ 'ignore)