code: public <T extends AmazonWebServiceRequest> T withSdkClientExecutionTimeout(int sdkClientExecutionTimeout) {
          setSdkClientExecutionTimeout(sdkClientExecutionTimeout);
          @SuppressWarnings("unchecked")
          T t = (T) this;
          return t;
      }
docs: Sets the amount of time (in milliseconds) to allow the client to complete the execution of
  an API call. This timeout covers the entire client execution except for marshalling. This
  includes request handler execution, all HTTP request including retries, unmarshalling, etc.
  <p>
  This feature requires buffering the entire response (for non-streaming APIs) into memory to
  enforce a hard timeout when reading the response. For APIs that return large responses this
  could be expensive.
  <p>
  <p>
  The client execution timeout feature doesn't have strict guarantees on how quickly a request
  is aborted when the timeout is breached. The typical case aborts the request within a few
  milliseconds but there may occasionally be requests that don't get aborted until several
  seconds after the timer has been breached. Because of this the client execution timeout
  feature should not be used when absolute precision is needed.
  </p>
  <p>
  This may be used together with {@link AmazonWebServiceRequest#setSdkRequestTimeout(int)} to
  enforce both a timeout on each individual HTTP request (i.e. each retry) and the total time
  spent on all requests across retries (i.e. the 'client execution' time). A non-positive value
  disables this feature.
  </p>
  <p>
  <b>Note:</b> This feature is not compatible with Java 1.6.
  </p>
  
  @param sdkClientExecutionTimeout
  The amount of time (in milliseconds) to allow the client to complete the execution
  of an API call. A non-positive value disables the timeout for this request.
  @return The updated AmazonWebServiceRequest object for method chaining
  @see {@link AmazonWebServiceRequest#setSdkRequestTimeout(int)} to enforce a timeout per HTTP
  request