code: public UploadObjectObserver init(UploadObjectRequest req,
                                       S3DirectSpi s3direct, AmazonS3 s3, ExecutorService es) {
          this.req = req;
          this.s3direct = s3direct;
          this.s3 = s3;
          this.es = es;
          return this;
      }
docs: Used to initialized this observer. This method is an SPI (service
  provider interface) that is called from
  <code>AmazonS3EncryptionClient</code>.
  <p>
  Implementation of this method should never block.
  
  @param req
  the upload object request
  @param s3direct
  used to perform non-encrypting s3 operation via the current
  instance of s3 (encryption) client
  @param s3
  the current instance of s3 (encryption) client
  @param es
  the executor service to be used for concurrent uploads
  @return this object