code: def append(self, func, *args, **kwargs):
          
          self.chain.append((func, args, kwargs))
          # remove existing results
          if self.started:
              delete_group(self.group)
              self.started = False
          return self.length()
docs: add a task to the chain
          takes the same parameters as async_task()