code: func newController(client engineapi.APIClient, nodeDescription *api.NodeDescription, task *api.Task, secrets exec.SecretGetter) (exec.Controller, error) {
  	adapter, err := newContainerAdapter(client, nodeDescription, task, secrets)
  	if err != nil {
  		return nil, err
  	}
  
  	return &controller{
  		task:    task,
  		adapter: adapter,
  		closed:  make(chan struct{}),
  	}, nil
  }
docs: // newController returns a docker exec controller for the provided task.