anchor.diff:            _controller.add(RawSocketEvent.closed);
             _controller.close();
           },
  -        error: zone.bindUnaryCallbackGuarded((e) {
  -          _controller.addError(e);
  +        error: zone.bindBinaryCallbackGuarded((e, st) {
  +          _controller.addError(e, st);
             _socket.close();
           }));
     }
  
positive.code:     if (isClosing || isClosed) return null;
      var result = nativeRecvFrom();
      if (result is OSError) {
        reportError(result, "Receive failed");
        return null;
      }
      if (result != null) {
  
negative.code:         nativeWrite(bufferAndStart.buffer, bufferAndStart.start, bytes);
      if (result is OSError) {
        OSError osError = result;
        StackTrace st = StackTrace.current;
        scheduleMicrotask(() => reportError(osError, st, "Write failed"));
        result = 0;
      }
      // The result may be negative, if we forced a short write for testing
  