code: func (t *Thread) Try(f func(t *Thread)) error {
  	oc := t.abort
  	c := make(chan error)
  	t.abort = c
  	go func() {
  		f(t)
  		c <- nil
  	}()
  	err := <-c
  	t.abort = oc
  	return err
  }
docs: // Try executes a computation; if the computation
  // Aborts, Try returns the error passed to abort.