conditional dropping depends on beforeDrop callback return