code: public static List<Response> executeConnectionAndWait(HttpURLConnection connection, RequestBatch requests) {
          List<Response> responses = Response.fromHttpConnection(connection, requests);
  
          Utility.disconnectQuietly(connection);
  
          int numRequests = requests.size();
          if (numRequests != responses.size()) {
              throw new FacebookException(String.format("Received %d responses while expecting %d", responses.size(),
                      numRequests));
          }
  
          runCallbacks(requests, responses);
  
          // See if any of these sessions needs its token to be extended. We do this after issuing the request so as to
          // reduce network contention.
          HashSet<Session> sessions = new HashSet<Session>();
          for (Request request : requests) {
              if (request.session != null) {
                  sessions.add(request.session);
              }
          }
          for (Session session : sessions) {
              session.extendAccessTokenIfNeeded();
          }
  
          return responses;
      }
docs: Executes requests that have already been serialized into an HttpURLConnection. No validation is done that the
  contents of the connection actually reflect the serialized requests, so it is the caller's responsibility to
  ensure that it will correctly generate the desired responses.
  <p/>
  This should only be called if you have transitioned off the UI thread.
  
  @param connection
  the HttpURLConnection that the requests were serialized into
  @param requests
  the RequestBatch represented by the HttpURLConnection
  @return a list of Responses corresponding to the requests
  
  @throws FacebookException
  If there was an error in the protocol used to communicate with the service