@classmethod
def connect(cls, node, part, path, headers, watchdog, conn_timeout,
    node_timeout, write_timeout, send_exception_handler, logger=None,
    chunked=False, **kwargs):
    """
        Connect to a backend node and send the headers.

        :returns: Putter instance

        :raises ConnectionTimeout: if initial connection timed out
        :raises ResponseTimeout: if header retrieval timed out
        :raises InsufficientStorage: on 507 response from node
        :raises PutterConnectError: on non-507 server error response from node
        """
    conn, expect_resp, final_resp, connect_duration = cls._make_connection(node
        , part, path, headers, conn_timeout, node_timeout)
    return cls(conn, node, final_resp, path, connect_duration, watchdog,
        write_timeout, send_exception_handler, logger, chunked=chunked)
