create promise-based XHR wrapper for POSTs (issue #23)