Promises Step 1: Use promises instead of callbacks

This step was a small step, merely to swap out
callbacks for promises at the adapter level.
Subsequent steps will result in more aggressive
refactoring, and begin to fully use promises.