docs: def create_ethereum_client(uri, timeout=60, *, loop=None):
      """Create client to ethereum node based on schema.
  
      :param uri: Host on ethereum node
      :type uri: str
  
      :param timeout: An optional total time of timeout call
      :type timeout: int
  
      :param loop: An optional *event loop* instance
                   (uses :func:`asyncio.get_event_loop` if not specified).
      :type loop: :ref:`EventLoop<asyncio-event-loop>`
  
      :return: :class:`BaseAsyncIOClient` instance.
      """
      if loop is None:
          loop = asyncio.get_event_loop()
  
      presult = urlparse(uri)
      if presult.scheme in ('ipc', 'unix'):
          reader, writer = yield from asyncio.open_unix_connection(presult.path,
                                                                   loop=loop)
          return AsyncIOIPCClient(reader, writer, uri, timeout, loop=loop)
      elif presult.scheme in ('http', 'https'):
          tls = presult.scheme[-1] == 's'
          netloc = presult.netloc.split(':')
          host = netloc.pop(0)
          port = netloc.pop(0) if netloc else (443 if tls else 80)
          return AsyncIOHTTPClient(host, port, tls, timeout, loop=loop)
      else:
          raise RuntimeError('This scheme does not supported.')