1. Why I am getting empty responses even when ‘top’ indicator is set to false?

Internally, Firehose API uses a few queues to deliver customer events. These queues are shared amongst multiple customers. Firehose favours low latency responses even if limited to no data is returned over long responses with a constant data size. If you receive an empty response from Firehose API with the top field returned as false, just repeat the request to receive more data.