'Buffered' function for Rx
Don't expose fields, even if they're readonly:

public readonly T Value;
public readonly int BufferSize;


Instead expose properties:

public T Value { get; private set; }
public int BufferSize { get; private set; }