fix error types, support promises on convenience methods

closes #48