'Executes the function in the background.
AsynchronousRequest.done is False as long as it is busy, but the program will not halt in the meantime.
AsynchronousRequest.value contains the function\'s return value once done.
AsynchronousRequest.error contains the Exception raised by an erronous function.
For example, this is useful for running live web requests while keeping an animation running.
For good reasons, there is no way to interrupt a background process (i.e. Python thread).
You are responsible for ensuring that the given function doesn\'t hang.'

def __init__(self, function, *args, **kwargs):

    self._response = None
    self._error = None
    self._time = time.time()
    self._function = function
    self._thread = threading.Thread(target=self._fetch, args=((function,) + args), kwargs=kwargs)
    self._thread.start()
