Creates a future from an expression and returns it.
The state of the future is either unresolved or resolved.
When it becomes resolved, at some point in the future,
its value can be retrieved.
The environment from where global
objects should be identified. Depending on "evaluator",
it may also be the environment in which the expression
is evaluated.
substitute
If TRUE, argument expr is
substitute():ed, otherwise not.
evaluator
The actual function that evaluates
expr and returns a future. The evaluator function
should accept all the same arguments as this function
(except evaluator).
It is recommended that the evaluator is non-blocking
(returns immediately), but it is not required.
The default evaluator function is eager(),
but this can be changed via plan() function.