private void ComputeFuture(object state) { try { _started.Set(); _value = ((IFn)state).invoke(); } catch (ThreadAbortException) { _cancelled = true; Thread.ResetAbort(); } catch (Exception ex) { _error = ex; } }