Issue #145, #143 - Async callback refactoring using promises, use strict everywhere