FileUpload object discarded too soon?

Started playing around with the file upload feature as described in the docs.

However, even when running the sample code below, the save() function always insists that data.photo is no object. Before that happens, the upload takes place as expected, a JSON file with metadata is created, and the template runs getPreviewURL() just fine. After clicking the submit button, all information in photo appears to be gone and the value is reset to an empty string.

<cfscript>
    data = {
        "photo": ""
    };

    function saveFile() {
		if ( isObject(data.photo) ) {
			fileWrite( expandPath( "./somewhere.jpg" ), data.photo.get() );
			data.photo.destroy();
		} 
    }
</cfscript>

<cfoutput>
	<div>
		<form wire:submit.prevent="saveFile">
			File: <input type="file" wire:model="photo">
			<div><button type="submit">Save</button></div>
			<div>
				<cfif isObject( photo )>
					<cfif photo.isImage()>
						<img src="#photo.getPreviewURL()#" style="width: 300px; height: auto;">
					<cfelse>
						<div>The file you uploaded is not an image. Preview not available.</div>
					</cfif>
				</cfif>
			</div>
		</form>
	</div>
</cfoutput>

Tried CBWIRE 3.2.7 and 3.3.2-snapshot and probably just stared too long at this… what am I doing wrong, @gcopley?