1. A method of performing dataflow processing the method comprising: representing a first asynchronous processing node as a first future, the first future representing the lifecycle of processing of the first asynchronous processing node; representing one or more other asynchronous operations as a one or more other futures, the one or more other futures representing the asynchronous completion of one or more operations' processing; and representing the first future and the one or more other futures as a single composite future, the single composite future representing completion of processing of the combination of the first asynchronous processing node and the one or more other asynchronous operations.