code: public static Source source(Socket socket) throws IOException {
      if (socket == null) throw new IllegalArgumentException("socket == null");
      AsyncTimeout timeout = timeout(socket);
      Source source = source(socket.getInputStream(), timeout);
      return timeout.source(source);
    }
docs: Returns a source that reads from {@code socket}. Prefer this over {@link
  #source(InputStream)} because this method honors timeouts. When the socket
  read times out, the socket is asynchronously closed by a watchdog thread.