anchor.diff:    void handleDone(EventSink<Response> sink, Trace trace) {
       _closed = true;
       if (_openCallbacks == 0) {
  -      trace.record(const RequestOverEvent());
  +      trace.record(new RequestOverEvent());
       }
     }
   
  
positive.code:   UserCallbackTracingTransformer() : super();
  
    void handleData(Response response, EventSink<Response> sink, Trace trace) {
      trace.record(const UserCallbackQueuedEvent());
      _openCallbacks++;
      _runZonedWithOnDone(() => sink.add(response), () {
        trace.record(const UserCallbackDoneEvent());
        _openCallbacks--;
        if (_openCallbacks == 0 && _closed) {
          trace.record(const RequestOverEvent());
        }
      });
    }
  
    void handleError(error, EventSink<Response> sink, Trace trace) {
      trace.record(const UserCallbackQueuedEvent());
      _openCallbacks++;
      _runZonedWithOnDone(() => sink.addError(error), () {
        trace.record(const UserCallbackDoneEvent());
        _openCallbacks--;
        if (_openCallbacks == 0 && _closed) {
          trace.record(const RequestOverEvent());
        }
      });
    }
  
negative.code: 
  /// Fired when the user callback of a response is queued.
  class UserCallbackQueuedEvent implements TraceEvent {
    factory UserCallbackQueuedEvent() => const UserCallbackQueuedEvent._private();
  
    const UserCallbackQueuedEvent._private();
  
    String toString() => 'streamy.userCallback.start';
  }
  
  /// Fired when the user callback of a response completes.
  class UserCallbackDoneEvent implements TraceEvent {
    factory UserCallbackDoneEvent() => const UserCallbackDoneEvent._private();
  
    const UserCallbackDoneEvent._private();
  
    String toString() => 'streamy.userCallback.done';
  }
  
  /// Fired when the response [Stream] has terminated.
  class RequestOverEvent implements TraceEvent {
    factory RequestOverEvent() => const RequestOverEvent._private();
  
    const RequestOverEvent._private();
  
    String toString() => 'streamy.requestOver';
  }
  