code: public Future<ReceiveMessageResult> receiveMessage(ReceiveMessageRequest rq,
                                                         AsyncHandler<ReceiveMessageRequest, ReceiveMessageResult> handler) {
          if (canBeRetrievedFromQueueBuffer(rq)) {
              QueueBufferCallback<ReceiveMessageRequest, ReceiveMessageResult> callback = null;
              if (handler != null) {
                  callback = new QueueBufferCallback<ReceiveMessageRequest, ReceiveMessageResult>(handler, rq);
              }
  
              QueueBufferFuture<ReceiveMessageRequest, ReceiveMessageResult> future = receiveBuffer.receiveMessageAsync(
                      rq, callback);
              future.setBuffer(this);
              return future;
          } else if (handler != null) {
              return realSqs.receiveMessageAsync(rq, handler);
          } else {
              return realSqs.receiveMessageAsync(rq);
          }
      }
docs: Submits a request to receive some messages from SQS.
  
  @return a Future object that will be notified when the operation is completed; never null;