Use -startWith: instead of +return:/-concat:
Remove -subscribeOn: from +canHasCaturdayFake

The signal doesn't _need_ to run on any particular scheduler, so this will synchronously generate the random value on whatever thread the subscription occurs on.
Follow recommended RAC style for chained signals

See https://github.com/ReactiveCocoa/ReactiveCocoa/blob/2.0-development/Documentation/DesignGuidelines.md#indent-stream-operations-consistently
Use -deliverOn: instead of -subscribeOn:

This is basically a documentation problem. See https://github.com/ReactiveCocoa/ReactiveCocoa/pull/543
More idiomatic timer-based signal

We take the interval, map each tick to the input signal, and then subscribe only to the latest one. We deliver the results to the main thread at the end, because that's the latest we can defer it (see https://github.com/ReactiveCocoa/ReactiveCocoa/blob/2.0-development/Documentation/DesignGuidelines.md#switch-schedulers-in-as-few-places-as-possible)
Remove now-unnecessary @weakify
Resubscribing signal *after* inner signal completes

As per https://github.com/lawrencelomax/ReactiveDemo/pull/1#discussion_r4488471