public function put($local_file, $remote_file = null, $mode = FTP_ASCII, $asynchronous = false, callable $asyncFn = null) {
		$this->connectIfNeeded();
		$full_remote_file = $this->handle->put($local_file, $remote_file, $mode, $asynchronous, $asyncFn);
		$this->onFileUploaded(new Event(['sender' => $this, 'data' => $remote_file]));
		return $full_remote_file;
	}