# File lib/aws/http/handler.rb, line 24
      def initialize(base, &block)
        @base = base
        if base.respond_to?(:handle)

          unless block.arity == 2
            raise ArgumentError, 'passed block must accept 2 arguments'
          end
          MetaUtils.extend_method(self, :handle, &block)

        elsif base.respond_to?(:handle_async)

          unless block.arity == 3
            raise ArgumentError, 'passed block must accept 3 arguments'
          end

          MetaUtils.extend_method(self, :handle_async) do |req, resp, handle|
            @base.handle_async(req, resp, handle)
          end
          MetaUtils.extend(self) do
            define_method(:handle) do |req, resp|
              raise "attempted to call #handle on an async handler"
            end
            define_method(:handle_async, &block)
          end

        else
          raise ArgumentError, 'base must respond to #handle or #handle_async'
        end
      end