anchor.diff:          _currentRoute.child._leaveCurrentRoute(event).then((allowNavigation) {
             if (!allowNavigation) {
               completer.complete(false);
  -          } else if (pendingResponses.length == 0) {
  -            completer.complete(true);
             } else {
  -            Future.wait(pendingResponses).then((List<bool> responses) {
  -              completer.complete(responses.reduce((a, b) => a && b));
  -            });
  +            _completePendingResponses(pendingResponses, completer);
             }
           });
         } else {
  -        if (pendingResponses.length == 0) {
  -          completer.complete(true);
  -        } else {
  -          Future.wait(pendingResponses).then((List<bool> responses) {
  -            completer.complete(responses.reduce((a, b) => a && b));
  -          });
  -        }
  +        _completePendingResponses(pendingResponses, completer);
         }
       } else {
         completer.complete(true);
       }
       return completer.future;
  +  }
  +
  +  _completePendingResponses(List<Future<bool>> pendingResponses,
  +                            Completer<bool> completer) {
  +    if (pendingResponses.length == 0) {
  +      completer.complete(true);
  +    } else {
  +      Future.wait(pendingResponses).then((List<bool> responses) {
  +        completer.complete(responses.reduce(reduceBools));
  +      });
  +    }
     }
   
     /**
  
positive.code:     return completer.future;
    }
  
    Future<bool> _leaveCurrentRoute(RouteEvent e) {
      Completer<bool> completer = new Completer<bool>();
      if (_currentRoute != null) {
        List<Future<bool>> pendingResponses = <Future<bool>>[];
        var event = e._clone((Future<bool> r) => pendingResponses.add(r));
  
        if (_currentRoute.leave != null) {
  
negative.code:       var match = prefixMatch(route.path, path);
        var tailPath = path.substring(match.end);
        if (!identical(route, _currentRoute)) {
          _processNewRoute(path, tailPath, match, route, completer);
        } else {
          if (route.child != null) {
            route.child.handle(tailPath).then((_) {
  