I really like signed longs because it let's me use the top bit as a flag in a single value that then can be atomically manipulated. Allows nice lock-free and sometimes wait-free operators. Anything else would require boxing and allocation.
Having <= 0 request is a bug in downstream; I really would like it to be an undefined behavior and have the Tck() operator be the diagnostic means for hunting down that bug.
An unrelated note, how do you feel about having extension methods targeting IPublisher directly? The problem with that is if two libs have overlapping extension methods, it becomes inconvenient to manually select one or the other.