docs: def encode_async_options(async):
      """Encode Async options for JSON encoding."""
      options = copy.deepcopy(async._options)
  
      options['_type'] = reference_to_path(async.__class__)
  
      # JSON don't like datetimes.
      eta = options.get('task_args', {}).get('eta')
      if eta:
          options['task_args']['eta'] = time.mktime(eta.timetuple())
  
      callbacks = async._options.get('callbacks')
      if callbacks:
          options['callbacks'] = encode_callbacks(callbacks)
  
      if '_context_checker' in options:
          _checker = options.pop('_context_checker')
          options['__context_checker'] = reference_to_path(_checker)
  
      if '_process_results' in options:
          _processor = options.pop('_process_results')
          options['__process_results'] = reference_to_path(_processor)
  
      return options