There might be a bug with timeout() calling the onTimeout callback even though the property delivers a value.
property.where((beOpt) => beOpt is Some).timeout(timeout, onTimeout: (_) {
_log.finest('timed out after $timeout waiting for Some property value');
return const None();
}).first.then((beOpt) {
// do something
});