Fix async waiter race condition

I believe that `waiter` is incorrectly initialized, because it was reset every time the a `next()` tick what happen, which could cause async pauses to get lost.

This came up in Kevin's PR at generator-generator which broke a test case: https://github.com/passy/generator-generator/pull/5

I'd really appreciate some feedback if I'm not completely on the wrong track.

/cc @kevva @sindresorhus