[minor] Clean up destroy, allow async close events
[minor] Introduce asyncemit