     path = '/atom/feed'
     # TODO: check res.statusCode is 200
     @_request { method, path }, callback
+
+  _reject: (message, callback) ->
+    try
+      e = new Error(message)
+      callback(e) if callback?
+    finally
+      Promise.reject(e)
 
   _request: ({ method, path, body }, callback) ->
     callback = callback ? (->)

  # returns:
  #   Promise
  destroy: ({ id }, callback) ->
    return callback(new Error('options.id is required')) unless id?
    method = 'delete'
    path = '/atom/edit/' + id
    # TODO: check res.statusCode is 200

  # returns:
  #   Promise
  update: ({ id, title }, callback) ->
    return @_reject('options.id is required', callback) unless id?
    return @_reject('options.title is required', callback) unless title?
    method = 'put'
    path = '/atom/edit/' + id
    body =
