anchor.diff:  
       if (_printDebugOutputToStdOut) {
         _debugPrint('$task...');
  -      return callback()..timeout(timeout, onTimeout: () {
  -        _debugPrint('$task is taking longer than usual...');
  -        return null;
  -      });
  +      final Timer longWarning = Timer(timeout, () => _debugPrint('$task is taking longer than usual...'));
  +      return callback().whenComplete(longWarning.cancel);
       }
   
       // We're not showing all output to the screen, so let's capture the output
  
positive.code:     }
      final StreamSubscription<String> subscription = _allMessages.stream.listen(logMessage);
  
      final Future<T> future = callback();
  
      future.timeout(timeout ?? defaultTimeout, onTimeout: () {
        _debugPrint(messages.toString());
        timeoutExpired = true;
        _debugPrint('$task is taking longer than usual...');
        return null;
      });
  
      return future.catchError((dynamic error) {
        if (!timeoutExpired) {
  
negative.code:         // have already completed.
          _currentRunningAppId = (await started)['params']['appId'] as String;
          prematureExitGuard.complete();
        } catch (error, stackTrace) {
          prematureExitGuard.completeError(error, stackTrace);
        }
      }());
  