def http_send(kind, target, packet, received_at, &callback)
      if @options[:async_response]
        EM_S.next_tick do
          begin
            http_send_once(kind, target, packet, received_at, &callback)
          rescue StandardError => e
            ErrorTracker.log(self, "Failed sending or handling response for #{packet.trace} #{packet.type}", e)
          end
        end
      else
        http_send_once(kind, target, packet, received_at, &callback)
      end
      true
    end
def http_send(kind, target, packet, received_at, &callback)
      if @options[:async_response]
        EM_S.next_tick do
          begin
            http_send_once(kind, target, packet, received_at, &callback)
          rescue StandardError => e
            ErrorTracker.log(self, "Failed sending or handling response for #{packet.trace} #{packet.type}", e)
          end
        end
      else
        http_send_once(kind, target, packet, received_at, &callback)
      end
      true
    end
Send request via HTTP
 Use next_tick for asynchronous response and to ensure
 that the request is sent using the main EM reactor thread

 === Parameters
 kind(Symbol):: Kind of request: :send_push or :send_request
 target(Hash|NilClass):: Target for request
 packet(Push|Request):: Request packet to send
 received_at(Time):: Time when request received

 === Block
 Optional block used to process response asynchronously with the following parameter:
   result(Result):: Response with an OperationResult of SUCCESS, RETRY, NON_DELIVERY, or ERROR

 === Return
 true:: Always return true