fixes #180 (memory leak)

In this way, promises will not chained together, and no memory leak.
It is inspired by https://github.com/tj/co/pull/181 from @spion , but more pretty~