Errors from HTTP, or failed statuses, will now be sent back to the callback. Additionally, the request-response handling code is now more centralized in the process_response() function, which optionally can add per-request error checking, but checks for the "typical" errors without any supervision. So now, if the host is down, or the request fails, this can be messages appropriately to the user in a consistent fashion.
First step: conforming to node.js standards. Errors, if not surfaced as separate events to bind to, should be passed as the first parameter to allow the callback to deal with it meaningfully. Currently, only the errors from the HTTP layer directly are being passed (timeouts and such). Further checks can be added to allow callees to distinguish between success and failure without data.status == 'success' checks (which, notably, fails in coupon creation).