Fixed major issues: 
1. Functions returned by check() didn't return the same value as the functions passed to check().
2. Use cross-platform setImmediate to control flow.
3. Check if the counter immediately after the stack unwinds when creating the a finisher check function.