code: func (v *Vibranium) BuildImage(opts *pb.BuildImageOptions, stream pb.CoreRPC_BuildImageServer) error {
  	v.taskAdd("BuildImage", true)
  	defer v.taskDone("BuildImage", true)
  
  	buildOpts, err := toCoreBuildOptions(opts)
  	if err != nil {
  		return err
  	}
  	// TODO VM BRANCH
  	ch, err := v.cluster.BuildImage(stream.Context(), buildOpts)
  	if err != nil {
  		return err
  	}
  
  	for m := range ch {
  		if err = stream.Send(toRPCBuildImageMessage(m)); err != nil {
  			v.logUnsentMessages("BuildImage", m)
  		}
  	}
  	return err
  }
docs: // BuildImage streamed returned functions