Helper function that first runs the canHandle function followed by the handle function.
Throws the error of the canHandle function if the data can't be handled,
or returns the result of the handle function otherwise.
Parameters
input: any
Input data that will be handled if it can be handled.
Returns Promise<never>
A promise resolving if the input can be handled, rejecting with an Error if not.
Return value depends on the given type.
Handler that does not support any input and will always throw an error.