if it is not callable and not null, it should trigger an exception instead of silently changing it (a better way would be to typehint the callable but the min supported version is still 5.3)