Use promise way for co@4

Closes #4 #2 #3 

cc @popomore