Call _doEnd() lazily instead of binding since we want to null it out later to avoid duplicate calls.
Add tests.
0.1.0