Return same promise if no handler is provided.

This is the `return self` optimization, split off from #102.