code: def submit(segment = 50)
        @responses = []
        @requests.uniq!(&:signature)
        @responses = @requests.each_slice(segment).to_a.threaded_map(2) do |slice|
           client.batch_request( BatchOperation.new(slice) )
        end
        @responses.flatten!
        #puts "Requests: #{@requests.count} == Response: #{@responses.count}"
        @requests.zip(@responses).each(&Proc.new) if block_given?
        @responses
      end
docs: Submit the batch operation in chunks until they are all complete. In general,
   Parse limits requests in each batch to 50 and it is possible that a {BatchOperation}
   instance contains more than 50 requests. This method will slice up the array of
   request and send them based on the `segment` amount until they have all been submitted.
   @param segment [Integer] the number of requests to send in each batch. Default 50.
   @return [Array<Parse::Response>] the corresponding set of responses for
    each request in the batch.