Postcomposition between actions is just `-flattenMap:` with `-deferred:`. Actions compose perfectly fine:

```objc
// View model
_loginAction = [[RACDynamicSignalGenerator
    generatorWithBlock:^(NSString *username) { ... }]
    actionEnabledIf:currentlyOnline];

// View controller
loginButton.rac_action = [[[self.usernameField.rac_textSignal
    take:1]
    flattenMap:^(NSString *text) {
        return [self.viewModel.loginAction deferred:text];
    }]
    action];
```

It's true there's no built-in operator to do all of that, but I think that's okay. I'd suggest that it's a bit of a smell to have a view or VC creating actions, since that's properly the responsibility of the view model.

A better way to write the above sample would be to bind `self.usernameField.rac_textSignal` to a view model property, so the VM's action perform validation upon it to determine whether the `loginAction` should be enabled.