only throw error on actual decoding error
add "engines" virtual function to avoid error
check for valid mappings
Merge branch 'es-json-error'
Merge branch 'es-engines-error'