Don't throw away data on user error.

If then() returns no data/undefined, don't throw the current data away.
Add tests for q.

Fixes #29.