docs: private Future<RawGcsCreationToken> putAsync(final GcsRestCreationToken token,
        ByteBuffer chunk, final boolean isFinalChunk, long timeoutMillis) {
      final int length = chunk.remaining();
      HTTPRequest request = createPutRequest(token, chunk, isFinalChunk, timeoutMillis, length);
      final HTTPRequestInfo info = new HTTPRequestInfo(request);
      return new FutureWrapper<HTTPResponse, RawGcsCreationToken>(urlfetch.fetchAsync(request)) {
        @Override
        protected Throwable convertException(Throwable e) {
          return OauthRawGcsService.convertException(info, e);
        }
  
        @Override
        protected GcsRestCreationToken wrap(HTTPResponse resp) throws Exception {
          return handlePutResponse(token, isFinalChunk, length, info, resp);
        }
      };
    }