code: func (sched *Scheduler) assume(assumed *v1.Pod, host string) error {
  	// Optimistically assume that the binding will succeed and send it to apiserver
  	// in the background.
  	// If the binding fails, scheduler will release resources allocated to assumed pod
  	// immediately.
  	assumed.Spec.NodeName = host
  
  	if err := sched.config.SchedulerCache.AssumePod(assumed); err != nil {
  		klog.Errorf("scheduler cache AssumePod failed: %v", err)
  
  		// This is most probably result of a BUG in retrying logic.
  		// We report an error here so that pod scheduling can be retried.
  		// This relies on the fact that Error will check if the pod has been bound
  		// to a node and if so will not add it back to the unscheduled pods queue
  		// (otherwise this would cause an infinite loop).
  		sched.recordSchedulingFailure(assumed, err, SchedulerError,
  			fmt.Sprintf("AssumePod failed: %v", err))
  		return err
  	}
  	// if "assumed" is a nominated pod, we should remove it from internal cache
  	if sched.config.SchedulingQueue != nil {
  		sched.config.SchedulingQueue.DeleteNominatedPodIfExists(assumed)
  	}
  
  	return nil
  }
docs: // assume signals to the cache that a pod is already in the cache, so that binding can be asynchronous.
  // assume modifies `assumed`.