anchor.diff:    }
   }
   
  +class _PendingRequest {
  +  final Completer completer;
  +
  +  /// We capture the current stack trace when `request` is called so that, if
  +  /// an exception occurs on the remote peer, we can throw exceptions with a
  +  /// proper stack trace pointing torwards the causing invocation.
  +  final StackTrace requestTrace;
  +
  +  _PendingRequest(this.completer, this.requestTrace);
  +
  +  void completeWithError(Object error) {
  +    completer.completeError(error, requestTrace);
  +  }
  +}
  +
   /// Exception thrown when there are outstanding pending requests at the time the
   /// isolate connection was cancelled.
   class ConnectionClosedException implements Exception {
  
positive.code:   // (one per remote). Each of them has an independent _currentRequestId field
    int _currentRequestId = 0;
    final Completer<void> _closeCompleter = Completer();
    final Map<int, Completer> _pendingRequests = {};
    final StreamController<Request> _incomingRequests =
        StreamController(sync: true);
  
    /// We capture the current stack trace when [request] is called so that, if
    /// an exception occurs on the remote peer, we can throw exceptions with a
    /// proper stack trace pointing torwards the causing invocation.
    final Map<int, StackTrace> _requestTraces = {};
  
    /// Starts a drift communication channel over a raw [StreamChannel].
    DriftCommunication(this._channel,
  
negative.code:     final id = requestId ?? newRequestId();
      final completer = Completer<T>();
  
      _pendingRequests[id] = _PendingRequest(completer, StackTrace.current);
  
      _send(Request(id, request));
      return completer.future;
  