fix chaining cycle

then() cannot return same Promise that it resolves.