           # If the where clause evaluates to false, don't add it
           if evaluationContext.evaluateExpression(node.foreach.where) then bindingSet.push(newBindings)
         catch error
-          throw new Error("Error evaluating the where expression '#{node.foreach.where}' for foreach node '#{node}': #{error}")
+          throw new Error("Error evaluating the where expression '#{node.foreach.where}' for foreach node '#{node}':\n#{error.stack}")
       else
         bindingSet.push(newBindings)
   else if _.isString(node.foreach.from)

    try
      outputValue = evaluationContext.evaluateExpression(paramValue, outParams)
    catch error
      throw new Error("Error evaluating the output parameter value expression '#{paramValue}' for node '#{node.action}': #{error}. Output params were #{JSON.stringify(outputParams)}.")

    [parent, key] = GE.getParentAndKey(evaluationContext, paramName.split("."))
    parent[key] = outputValue

          # If the where clause evaluates to false, don't add it
          if evaluationContext.evaluateExpression(node.foreach.where) then bindingSet.push(newBindings)
        catch error
          throw new Error("Error evaluating the where expression '#{node.foreach.where}' for foreach node '#{node}':\n#{error.stack}")
      else
        bindingSet.push(newBindings)
  else
