schedules body for invocation after given time and returns a
CancelableFutureTask. (cancel task) will cancel the task if possible and
return true iff cancellation was successful.
with-timeout
schedules timeout-form for invocation after given timeout and wraps named
fn so that calling it with any arguments also cancels the timeout if possible.
If the timeout has already been invoked, the fn will not run and will
immediately return nil