...     args=(fut, torch.ones(2) * 3)
         ... )
         >>> t.start()
         >>> print(fut.wait())
         tensor([3., 3.])
         >>> t.join()
then(callback)
  Append the given callback function to this "Future", which will
  be run when the "Future" is completed.  Multiple callbacks can
  be added to the same "Future", but the order in which they will
  be executed cannot be guaranteed (to enforce a certain order
  consider chaining: "fut.then(cb1).then(cb2)"). The callback must
  take one argument, which is the reference to this "Future". The
  callback function can use the "value()" method to get the value.
  Note that if this "Future" is already completed, the given
  callback will be run immediately inline.

  If the "Future"'s value contains tensors that reside on GPUs,
  the callback might be invoked while the async kernels that are
  populating those tensors haven't yet finished executing on the
