I implement ISRs as a sequence which will send a sequence item to the associated driver telling it to wait for an interrupt. The driver will send a response when the interrupt happens. When the response is received, the ISR sequence will determine which interrupt happened and handle it appropriately. When handled, another sequence item will be sent which can then send back a response for the next interrupt.