code: def handle_decisions(self, event_id, decisions):
          
          # handle each decision separately, in order
          for decision in decisions:
              decision_type = decision["decisionType"]
              attributes_key = "{0}DecisionAttributes".format(
                  decapitalize(decision_type))
              attributes = decision.get(attributes_key, {})
              if decision_type == "CompleteWorkflowExecution":
                  self.complete(event_id, attributes.get("result"))
              elif decision_type == "FailWorkflowExecution":
                  self.fail(event_id, attributes.get(
                      "details"), attributes.get("reason"))
              elif decision_type == "ScheduleActivityTask":
                  self.schedule_activity_task(event_id, attributes)
              else:
                  # TODO: implement Decision type: CancelTimer
                  # TODO: implement Decision type: CancelWorkflowExecution
                  # TODO: implement Decision type: ContinueAsNewWorkflowExecution
                  # TODO: implement Decision type: RecordMarker
                  # TODO: implement Decision type: RequestCancelActivityTask
                  # TODO: implement Decision type: RequestCancelExternalWorkflowExecution
                  # TODO: implement Decision type: ScheduleLambdaFunction
                  # TODO: implement Decision type: SignalExternalWorkflowExecution
                  # TODO: implement Decision type: StartChildWorkflowExecution
                  # TODO: implement Decision type: StartTimer
                  raise NotImplementedError(
                      "Cannot handle decision: {0}".format(decision_type))
  
          # finally decrement counter if and only if everything went well
          self.open_counts["openDecisionTasks"] -= 1
docs: Handles a Decision according to SWF docs.
          See: http://docs.aws.amazon.com/amazonswf/latest/apireference/API_Decision.html