#152 Use promises instead of counting callbacks