class Excon::UnixSocket

def connect

def connect
  @socket  = ::Socket.new(::Socket::AF_UNIX, ::Socket::SOCK_STREAM, 0)
  sockaddr = ::Socket.sockaddr_un(@data[:socket])
  if @nonblock
    begin
      @socket.connect_nonblock(sockaddr)
    rescue Errno::EINPROGRESS
      unless IO.select(nil, [@socket], nil, @data[:connect_timeout])
        raise(Excon::Errors::Timeout.new("connect timeout reached"))
      end
      begin
        @socket.connect_nonblock(sockaddr)
      rescue Errno::EISCONN
      end
    end
  else
    begin
      Timeout.timeout(@data[:connect_timeout]) do
        @socket.connect(sockaddr)
      end
    rescue Timeout::Error
      raise Excon::Errors::Timeout.new('connect timeout reached')
    end
  end
rescue => error
  @socket.close rescue nil if @socket
  raise error
end