It seems like during server start when we apply non-snapshotted log records to the state machine we add elements to the commit_ret_elems_ https://github.com/eBay/NuRaft/blame/master/src/handle_commit.cxx#L353 even for async_handler API. But nobody will erase them, and during the shutdown, we will get a lot of cancelled non-blocking client request in drop_all_pending_commit_elems.
BTW I don't understand why we care about commit_ret_elems_ for non-blocking mode: https://github.com/ebay/NuRaft/blob/master/include/libnuraft/raft_server.hxx#L1270