anchor.diff:  
     /// Tracks the current stack chain so it can be set to [_currentChain] when
     /// [f] is run.
  -  ZoneCallback _registerCallback(
  -      Zone self, ZoneDelegate parent, Zone zone, Function f) {
  +  ZoneCallback<R> _registerCallback<R>(
  +      Zone self, ZoneDelegate parent, Zone zone, R f()) {
       if (f == null || _disabled) return parent.registerCallback(zone, f);
       var node = _createNode(1);
       return parent.registerCallback(zone, () => _run(f, node));
  
positive.code: 
    /// Looks up the chain associated with [stackTrace] and passes it either to
    /// [_onError] or [parent]'s error handler.
    _handleUncaughtError(
        Zone self, ZoneDelegate parent, Zone zone, error, StackTrace stackTrace) {
      if (_disabled) {
        return parent.handleUncaughtError(zone, error, stackTrace);
      }
  
      var stackChain = chainFor(stackTrace);
      if (_onError == null) {
        return parent.handleUncaughtError(zone, error, stackChain);
      }
  
      // TODO(nweiz): Currently this copies a lot of logic from [runZoned]. Just
      // allow [runBinary] to throw instead once issue 18134 is fixed.
      try {
        return parent.runBinary(zone, _onError, error, stackChain);
      } catch (newError, newStackTrace) {
        if (identical(newError, error)) {
          return parent.handleUncaughtError(zone, error, stackChain);
        } else {
          return parent.handleUncaughtError(zone, newError, newStackTrace);
        }
      }
    }
  
negative.code: 
    /// Tracks the current stack chain so it can be set to [_currentChain] when
    /// [f] is run.
    ZoneBinaryCallback<R, T1, T2> _registerBinaryCallback<R, T1, T2>(
        Zone self, ZoneDelegate parent, Zone zone, Function f) {
      if (f == null || _disabled) return parent.registerBinaryCallback(zone, f);
  
  