To avoid mutation, the result of a promise `p` can be injected into promise `q` when `p` gets fulfilled:
`p.success( (result) -> q(result))`