It feels inconsistent. Any technical reason for that? I think ideally the entire interface should be promise based (and optionally callback based).