             for task in project.tasks
               msg.reply "  ‣ #{task.name} (#{if task.billable then 'billable' else 'non-billable'})"
         else
-          msg.reply "Request failed with status #{status}."
+          msg.reply "Failed to retrieve project/task list: request failed with status #{status}."
     catch error
-      msg.reply "Fatal error: #{error}"
+      msg.reply "Failed to retrieve project/task list: fatal error: #{error}"
 
   # Kick off a new timer, stopping the previously running one, if any.
   robot.respond /start harvest at (.+)\/(.+): (.*)/i, (msg) ->

            msg.reply "Previously running timer stopped at #{body.hours_for_previously_running_timer}h."
          msg.reply "OK, I started tracking you on #{body.project}/#{body.task}."
        else
          msg.reply "Request failed with status #{status}."
    catch error
      msg.reply "Fatal error: #{error}"

  # Stops the timer running for a project/task combination,
  # if any. If no combination is given, stops the first

        else
          msg.reply "Uh-oh – I just tested your credentials, but they appear to be wrong. Please specify the correct ones."
    catch error
      msg.reply "Unable to test credentials: fatal error: #{error}"

  # Allows a user to delete his credentials.
  robot.respond /forget my harvest account/i, (msg) ->
