State: State type of the system.
Request: Subset of state used to control the feedback loop.

When `request` returns a value, that value is being passed into `effects` lambda to decide which effects should be performed.
In case new `request` is different from the previous one, new effects are calculated by using `effects` lambda and then performed.

When `request` returns `nil`, feedback loops doesn't perform any effect.

@param request The request to perform some effects.
@param effects The request effects.
@param retryStrategy The retry strategy for the effects in case an error happends.
@returns The feedback loop performing the effects.
function react(request, effects, retryStrategy) {
        return reactWithLatest(function (state) {
            var requestInstance = request(state);
            return requestInstance != null
                ? [{ id: requestInstance, request: requestInstance }]
                : [];
        }, function (request, _, scheduler) { return effects(request, scheduler); }, retryStrategy);
    }