use co, cleanup promise logic
1.2.0