title: S3Client->GetObject() never returns or throws an exception if given a non-existent key
body: <p><code>AWS S3Client-&gt;getObject()</code> never returns and never throws an exception if I request a key that doesn't exist.  I suspect that other S3Client methods have the same problem when given a non-existent key.</p>
  
  <p>However, if I configure the S3Client with <code>'debug' =&gt; true</code>, it will throw <code>Aws\S3\Exception\S3Exception</code> when the file is not found, which is acceptable.</p>
  
  <p>Here is a test case I wrote:</p>
  
  <pre><code>protected function _test_s3_client_get($unit, $key) {
      $provider = CredentialProvider::ini(NULL, APPPATH . 'config/aws.ini');
      $provider = CredentialProvider::memoize($provider);
      $client = new S3Client([
          'region' =&gt; 'us-east-1',
          'version' =&gt; '2006-03-01',
          'credentials' =&gt; $provider,
          // 'debug' =&gt; ['logfn' =&gt; [$this, '_noop']]
          // 'debug' =&gt; true,
      ]);
      try {
          $result = $client-&gt;getObject(array(
              'Bucket' =&gt; 'mybucket',
              'Key'=&gt; $key,
              ));
      } catch (S3Exception $e) {
          error_log($e);
      }
      $unit-&gt;run(isset($result['Body']), true, "Got $key");
  }
  </code></pre>
  
  <p>If <code>'debug' =&gt; true</code>, the S3Client dumps a huge amount of data in the response regardless of whether or not it found the file.  As a workaround, I can set the <code>debug</code> option to call an empty function with the debug output.  Nevertheless, this does not look like a permanent solution.</p>
  
  <p>Has anyone else encountered this problem?  Is there a better workaround?</p>