I am nur sure, if this is the best solution, but this is, how I (currently) solve this class of problem:
If the FRP logic decides to download a file it creates an event on a stream. An external listener consumes the event and does the download in a separate thread. After finishing the download, an event with the result is sent to the FRP logic for further actions.