docs: def _package(self, task, *args, **kw):
          """
          Used internally. Simply wraps the arguments up in a list and encodes 
          the list.
          """
          # Implementation note: it is faster to use a tuple than a list here, 
          # because json does the list-like check like so (json/encoder.py:424):
          #   isinstance(o, (list, tuple))
          # Because of this order, it is actually faster to create a list:
          #   >>> timeit.timeit('L = [1,2,3]\nisinstance(L, (list, tuple))')
          #   0.41077208518981934
          #   >>> timeit.timeit('L = (1,2,3)\nisinstance(L, (list, tuple))')
          #   0.49509215354919434
          # Whereas if it were the other way around, using a tuple would be 
          # faster:
          #   >>> timeit.timeit('L = (1,2,3)\nisinstance(L, (tuple, list))')
          #   0.3031749725341797
          #   >>> timeit.timeit('L = [1,2,3]\nisinstance(L, (tuple, list))')
          #   0.6147568225860596
          return self.codec.encode([task, args, kw])