Another node promises implementation, built up from smaller pieces