Using esc_url_raw with protocols properly

You are execpeting a WP Error object if the URL has a non-valid protocol but esc_url_raw returns an empty string in that case (see codex), not a WP Error object. So, is_wp_error( $escaped ) never verifies. Also, you are checking an undefined $escaped variable (note that the value of esc_url_raw is stored in $sanitized variable):

function scientifik_sanitize_url($url){

    $prots = array('http', 'https');
    $item  = $url;

    $escaped = esc_url_raw( $item, $prots );
    if ( empty( $escaped ) ) {
        return 'funny';
        die();
    }

    return $item;

};