How to wait until text/x-magento-init has loaded the options

I think the problem with what your trying to do is that a property defined dynamically within component.js will not be accessible from third.js.

As an alternative solution, you can pass whatever variables are needed directly to your 'third.js' file. You could use 'component.js' as a library of functions rather than as a middle man for passing data from the view.

In the template:

<script type="text/x-magento-init">
    {
        "*": {
            "third": {
                "var1" : "hello"
            }
        }
    }
</script>

third.js is defined like this:

define([
    'component'
], function (component) {
    'use strict';

    return function (config) {
        console.log(config); // will output the config object {var1: "hello"}
        component.foo(config.var1); // call function from component.js on data
    }
});

and component.js looks like this:

define([], function() {
    'use strict';
    return {
        foo: function (bar) {
            console.log(bar);
        }
    };
});