code: func SetLowPriority() error {
  	modkernel32 := syscall.NewLazyDLL("kernel32.dll")
  	setPriorityClass := modkernel32.NewProc("SetPriorityClass")
  
  	if err := setPriorityClass.Find(); err != nil {
  		return errors.Wrap(err, "find proc")
  	}
  
  	handle, err := syscall.GetCurrentProcess()
  	if err != nil {
  		return errors.Wrap(err, "get process handler")
  	}
  	defer syscall.CloseHandle(handle)
  
  	res, _, err := setPriorityClass.Call(uintptr(handle), belowNormalPriorityClass)
  	if res != 0 {
  		// "If the function succeeds, the return value is nonzero."
  		return nil
  	}
  	return errors.Wrap(err, "set priority class") // wraps nil as nil
  }
docs: // SetLowPriority lowers the process CPU scheduling priority, and possibly
  // I/O priority depending on the platform and OS.