Chapter 2: PassthroughSubject

I’m not seeing the “Still there?” that the book says should be printing in the example. I looked through the code but didn’t see anything I missed… Can I get another set of eyes on this?

example(of: "PassthroughSubject") {
    enum MyError: Error {
        case test
    final class StringSubscriber: Subscriber {
        typealias Input = String
        typealias Failure = MyError
        func receive(subscription: Subscription) {
        func receive(_ input: String) -> Subscribers.Demand {
            print("Received value", input)
            return input == "World" ? .max(1) : .none
        func receive(completion: Subscribers.Completion<MyError>) {
            print("Received completion", completion)
    let subscriber = StringSubscriber()
    let subject = PassthroughSubject<String, MyError>()
    let subscription = subject
            receiveCompletion: { completion in
                print("Received completion (sink)", completion)
            receiveValue: { value in
                print("Received value (sink)", value)

    subject.send("Still there?")

and the output I get is:

——— Example of: PassthroughSubject ———
Received value Hello
Received value (sink) Hello
Received value Brent
Received value (sink) Brent

Hi perlguy
your max is still at 2 because you decided to send “Brent” instead of “World”. World is the input that increases the max to 3.
Either send “World” or change this line: