anchor.diff:      // Move onto the next package if we've traversed all of these references.
       if (refs.isEmpty) return _traversePackage();
   
  +    // Pump the event loop to flatten the stack trace and workaround #9583.
  +    // If that bug is fixed, this can be Future.sync() instead.
       return new Future(() {
         var ref = refs.removeFirst();
   
  
positive.code:         return true;
        }
  
        logSolve('${previous} is last version, backtracking');
  
        // That package has no more versions, so pop it and try the next one.
        _selected.removeLast();
  
negative.code:           // If it fails for any reason, just treat that as no versions. This
            // will sort this reference higher so that we can traverse into it
            // and report the error more properly.
            log.solver("Could not get versions for $ref:\n$error\n\n"
                "${getAttachedStackTrace(error)}");
            return new Pair<PackageRef, int>(ref, 0);
          });
        }
  