Throw on non-function listener

Fix for #223
Test added
@tcr maybe the contribution guide should include some notes about using tap