diff --git a/async_push.py b/async_push.py
index 7571d0c..9908da9 100644
--- a/async_push.py
+++ b/async_push.py
@@ -59,17 +59,18 @@
 
 
 class AsyncPush(AsyncPushNoop):
-  """Sends HTTP Post in a background worker thread.
+  """Sends HTTP Post asynchronously to the tree status application.
 
-  Thread-safe.
+  This object uses a background worker thread, and is thread-safe.
   """
   _TERMINATE = object()
 
-  def __init__(self, url, password):
+  def __init__(self, url, password, resource='/receiver'):
     super(AsyncPush, self).__init__()
     assert url
     assert password
     self.url = url
+    self.resource = resource
     self.password = password
     self.queue = Queue.Queue()
     self.thread = threading.Thread(target=self._worker_thread)
@@ -111,7 +112,7 @@
           done = True
           logging.debug('Worker thread exiting')
           items.remove(self._TERMINATE)
-        url = self.url + '/receiver'
+        url = self.url + self.resource
         logging.debug('Sending %d items to %s' % (len(items), url))
         try:
           data = [('p', json.dumps(item)) for item in items]
diff --git a/pending_manager.py b/pending_manager.py
index 7548be2..3efb648 100644
--- a/pending_manager.py
+++ b/pending_manager.py
@@ -148,14 +148,18 @@
   # Delay (secs) between commit bursts.
   COMMIT_BURST_DELAY = 10*60
 
-  def __init__(self, context_obj, pre_patch_verifiers, verifiers):
+  def __init__(self, context_obj, pre_patch_verifiers, verifiers,
+               project_name=''):
     """
     Args:
       pre_patch_verifiers: Verifiers objects that are run before applying the
                            patch.
       verifiers: Verifiers object run after applying the patch.
     """
-    assert len(pre_patch_verifiers) or len(verifiers)
+    if not(len(pre_patch_verifiers) or len(verifiers)):
+      raise ValueError('at least one verifier should be defined (in project %s)'
+                       % project_name)
+
     self.context = context_obj
     self.pre_patch_verifiers = pre_patch_verifiers or []
     self.verifiers = verifiers or []
@@ -429,6 +433,7 @@
             'Failed to set the flag to False for %s with message %s' % (
               pending.pending_name(), message))
         traceback.print_stack()
+        logging.error(str(e))
         errors.send_stack(e)
       if message:
         try:
diff --git a/tests/pending_manager_test.py b/tests/pending_manager_test.py
index efef86f..0407eae 100755
--- a/tests/pending_manager_test.py
+++ b/tests/pending_manager_test.py
@@ -165,19 +165,22 @@
 
   def testNoVerification(self):
     try:
-      # Need at least one verification.
       self._get_pc([], [])
-      self.fail()
-    except AssertionError:
+    except ValueError:
       pass
+    else:
+      self.fail(msg='A PendingManager must require at least one verifier.')
+
     try:
       # Cannot have the same verifier two times.
       self._get_pc(
           [fake.FakeVerifier(base.SUCCEEDED)],
           [fake.FakeVerifier(base.SUCCEEDED)])
-      self.fail()
     except AssertionError:
       pass
+    else:
+      self.fail(msg='A PendingManager should not accept the same verifier'
+                ' two times.')
 
   def _check_1(self, pc, result):
     issue = 31337
